我在这里寻找一种快速简便的方法来在模型中发生回发时绑定复选框列表项的列表。
显然现在常见的做法似乎是这样的form.GetValues("checkboxList")[0].Contains("true");
这看起来很痛苦而且不太安全。
有没有一种方法可以绑定复选框列表(在视图中使用或不使用帮助程序创建的),甚至是在执行过程中重要的数据数组UpdateModel(myViewModel, form.ToValueProvider());
阶段将填充IList<string>
or string[]
模型内部?
你可以从一个模型开始:
public class MyViewModel
{
public int Id { get; set; }
public bool IsChecked { get; set; }
}
然后是一个控制器:
public class HomeController : Controller
{
public ActionResult Index()
{
var model = new[]
{
new MyViewModel { Id = 1, IsChecked = false },
new MyViewModel { Id = 2, IsChecked = true },
new MyViewModel { Id = 3, IsChecked = false },
};
return View(model);
}
[HttpPost]
public ActionResult Index(IEnumerable<MyViewModel> model)
{
// TODO: Handle the user selection here
...
}
}
a View (~/Views/Home/Index.aspx
):
<% using (Html.BeginForm()) { %>
<%=Html.EditorForModel() %>
<input type="submit" value="OK" />
<% } %>
最后是相应的编辑器模板:
<%@ Control
Language="C#"
Inherits="System.Web.Mvc.ViewUserControl<AppName.Models.MyViewModel>" %>
<%= Html.HiddenFor(x => x.Id) %>
<%= Html.CheckBoxFor(x => x.IsChecked) %>
现在,当您在 POST 操作中提交表单时,您将获得所选值的列表及其 ID。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)