2012-03-26 49 views
0

我有以下视图模型MVC3不能领型回控制器

public class RecommendationModel 
{ 
    public List<CheckBoxItem> CheckBoxList { get; set; } 

} 

public class CheckBoxItem 
{ 
    public string Text { get; set; } 
    public bool Checked { get; set; } 
    public string Link { get; set; } 
} 

用下面查看

model Sem_App.Models.RecommendationModel 

@using (Html.BeginForm()) 
{ 
     for (int i = 0; i < Model.CheckBoxList.Count(); i++) { 
     @Html.CheckBoxFor(m => m.CheckBoxList[i].Checked) 
     @Html.DisplayFor(m => m.CheckBoxList[i].Text)     
} 
<input type="submit" value="Add To Playlist" /> 
} 

用下面控制器动作

//get 
public ActionResult Recommendation() 
{ 
    RecommendationModel model = new RecommendationModel(); 
    model.CheckBoxList = new List<CheckBoxItem>(); 
    return PartialView(model); 
} 

//post 
[HttpPost] 
public ActionResult Recommendation(RecommendationModel model) 
{ 
     foreach (var item in model.CheckBoxList) 
     { 
      if (item.Checked) 
      { 
       // do something with item.Text 
      } 
     } 
} 

问题是每当我选择一些项目,然后按提交按钮返回的模型将CheckBoxList视为空。我怎样才能改变我的观点来返回CheckBoxList的列表?试图 @Html.HiddenFor(m => m.checkBoxList)我没有工作

回答

0

尝试添加链接为一个隐藏字段:@Html.HiddenFor(m => m.CheckBoxList[i].Link)

+0

奏效!但现在我得到我的控制器中的CheckBoxItem.Link和CheckBoxItem.Text空值有什么想法?我更新了我的控制器 – user972616 2012-03-26 01:03:30

+0

查看“DisplayFor”输出的HTML,[此方法呈现表示属性值的字符串。](http://msdn.microsoft.com/zh-cn/library/ee407390%28v = vs.98%29.aspx)当您POST表单时,此值不会像其他表单输入(和隐藏字段)一样发送回控制器。 MVC需要从这篇文章中的已知数据重建模型......请记住,MVC是无状态的(再见viewstate)。 – felickz 2012-03-26 04:19:05

0

选中复选框,输入名称是如何在呈现的HTML,并检查表单动作发送到corrent控制器/动作和方法后

它应该是很简单..创建操作PARAM为阵的“名”的同名属性窗体复选框,输入

像这样

[HttpPost] 
    public ActionResult Delete(int[] checkName) 
{ 

} 
1

我想你的东东像这样

​​