适合个人做的网站,wordpress创建自定义页面模板,学院网页设计,wordpress 插件里有中文我们知道#xff0c;在ASP.NET MVC中实现多选Select的话#xff0c;使用Html.ListBoxFor或Html.ListBox方法就可以。在实际应用中#xff0c;到底该如何设计View Model#xff0c; 控制器如何接收多选Select的选中项呢#xff1f; 实现效果如下#xff1a; 初始状态某些选…我们知道在ASP.NET MVC中实现多选Select的话使用Html.ListBoxFor或Html.ListBox方法就可以。在实际应用中到底该如何设计View Model 控制器如何接收多选Select的选中项呢 实现效果如下 初始状态某些选项被选中。 当按着ctrl键进行重新选择多项点击提交按钮把选中项的id拼接。 对于Select中的项包含显示值Value值以及是否选中抽象成如下的类。 public class City{public int Id { get; set; }public string Name { get; set; }public bool IsSelected { get; set; }} 对于整个多选Select来说在ASP.NET MVC中所有的选项被看作SelectListItem类型选中的项是一个string类型的集合。于是多选Select的View Model设计为 public class CityVm{public IEnumerableSelectListItem Cities { get; set; }public IEnumerablestring SelectedCities { get; set; }} 在HomeController中把SelectListItem的集合赋值给CityVm的Cities属性。 public class HomeController : Controller{public ActionResult Index(){var cities new ListCity{new City(){Id 1, Name 青岛, IsSelected true},new City(){Id 2, Name 胶南, IsSelected false},new City(){Id 3, Name 即墨, IsSelected true},new City(){Id 4, Name 黄岛, IsSelected false},new City(){Id 5, Name 济南, IsSelected false}};var citiesToPass from c in citiesselect new SelectListItem() {Text c.Name, Value c.Id.ToString(),Selected c.IsSelected};CityVm cityVm new CityVm();cityVm.Cities citiesToPass;ViewData[cc] citiesToPass.Count();return View(cityVm);}......} 在Home/Index.cshtml中,是一个CityVm的强类型视图对于选中的项会以IEnumerablestring集合传递给控制器。 model MvcApplication1.Models.CityVm
{ViewBag.Title Index;Layout ~/Views/Shared/_Layout.cshtml;
}
h2Index/h2
using (Html.BeginForm(GetCities, Home, FormMethod.Post, new {id myForm}))
{ Html.ListBoxFor(c c.SelectedCities, Model.Cities, new {size ViewData[cc]})br/input typesubmit value提交/
}在HomeController中再把从视图传递过来的IEnumerablestring拼接并呈现。 public class HomeController : Controller{......[HttpPost]public ActionResult GetCities(IEnumerablestring selectedCities){if (selectedCities null){return Content(没有选中任何选项);}else{StringBuilder sb new StringBuilder();sb.Append(选中项的Id是 string.Join(,, selectedCities));return Content(sb.ToString());}}} 转载于:https://www.cnblogs.com/darrenji/p/4377157.html