MVCContrib网格:
@model ViewModel
@using (Html.BeginForm("SendData", "Home", FormMethod.Post))
{
@Html.Grid(Model.List).Columns(c =>
{
c.For(x => x.Id);
c.For(x => x.Name);
c.For(x =>Html.Partial("Partial/CheckBoxTemplate", new CheckBoxViewModel { Id = x.Id })).Named("Options");
})
@Html.SubmitButton()
}
控制器POST操作:
public ActionResult SendData(List<CheckBoxViewModel> list)
{
return View();
}
的ViewModels:
public class CheckBoxViewModel
{
public int Id { get; set; }
public bool CheckBox { get; set; }
}
public class ViewModel
{
public IPagination<Data> List { get; set; }
}
public class Data
{
public int Id { get; set; }
public string Name { get; set; }
}
部分观点:
@model MvcApplication1.Models.CheckBoxViewModel
@Html.HiddenFor(x => x.Id)
@Html.CheckBoxFor(x => x.CheckBox)
所有checkboxed默认情况下不进行检查。
我怎样才能找回我的所有选中的复选框值SendData
的动作?
我会建议你使用,这将反映您观的要求(显示包含于各行的复选框一个网格,显示物品的ID和名称,并在回传动作检索列表中的这些值)真正的视图模型:
public class CheckBoxViewModel
{
public int Id { get; set; }
public string Name { get; set; }
public bool CheckBox { get; set; }
}
public class ViewModel
{
public IPagination<CheckBoxViewModel> List { get; set; }
}
再有你的观点强类型此视图模型:
@model ViewModel
@using (Html.BeginForm("SendData", "Home", FormMethod.Post))
{
@Html.Grid(Model.List).Columns(c =>
{
c.For(x => x.Id);
c.For(x => x.Name);
c.For(x => Html.Partial("Partial/CheckBoxTemplate", x)).Named("Options");
})
<button type="submit">OK</button>
}
最后你的局部看起来是这样的:
@model CheckBoxViewModel
@{
var index = Guid.NewGuid().ToString();
}
@Html.Hidden("list.Index", index)
@Html.Hidden("list[" + index + "].Id", Model.Id)
@Html.Hidden("list[" + index + "].Name", Model.Name)
@Html.CheckBox("list[" + index + "].CheckBox", Model.CheckBox)
现在,当SendData
被调用的动作将通过您的视图模型的列表。
另外,您可以使用Html.BeginCollectionItem
中提出的助手following article
,这将允许您使用助手的强类型版本:
@model CheckBoxViewModel
@using(Html.BeginCollectionItem("list"))
{
@Html.HiddenFor(x => x.Id)
@Html.HiddenFor(x => x.Name)
@Html.CheckBoxFor(x => x.CheckBox)
}
建议进一步阅读: Model Binding To A List
。
文章来源: ASP.NET MVC 4 and MVCContrib Grid: Render Checkbox for each TR and Post values in complex type