我有一个类为MoreInfo:
public class MoreInfo { public string Name { get; set; } public string selectedCheckBoxItems {get; set;} }
我想知道如何在视图上创建一个复选框列表,并将检出的项目传递给我的控制器提交。
我将如何创建复选框列表以及如何传递所有选中的项目并处理它们?
解决方法
让我们稍微修改一下你的模型:
public class Itemviewmodel { public string Id { get; set; } public string Name { get; set; } public bool Checked { get; set; } }
那么你可以有一个控制器:
public class HomeController: Controller { public ActionResult Index() { // This action is used to render the form => // we should populate our model with some values // which could obvIoUsly come from some data source var model = new[] { new Itemviewmodel { Id = "1",Checked = true,Name = "item 1" },new Itemviewmodel { Id = "2",Checked = false,Name = "item 2" },new Itemviewmodel { Id = "3",Name = "item 3" },}; return View(model); } [HttpPost] public ActionResult Index(IEnumerable<Itemviewmodel> items) { // This action will be invoked when the form is submitted // and here the view model will be properly bound and // you will get a collection of all items with their // corresponding id,name and whether they were checked or not ... } }
那么你将有一个相应的视图(〜/ Views / Home / Index.cshtml),它将包含允许用户检查/取消选中值的形式:
@model IEnumerable<AppName.Models.Itemviewmodel> @using (Html.BeginForm()) { @Html.EditorForModel() <input type="submit" value="OK" /> }
最后是编辑器模板(〜/ Views / Home / EditorTemplates / Itemviewmodel.cshtml):
@model AppName.Models.Itemviewmodel // Those two hidden fields are just to persist the id and name @Html.HiddenFor(x => x.Id) @Html.HiddenFor(x => x.Name) <div> @Html.CheckBoxFor(x => x.Checked) @Html.LabelFor(x => x.Checked,Model.Name) </div>