jQuery MultiSelect下拉列表如何访问结果?
如何根据mvc3 / razor调用JQUery Multi-select下拉列表中的结果?
http://abeautifulsite.net/blog/2008/04/jquery-multiselect/
multiselect插件使用[]
表示法将选定的值发送到服务器。 我们一如既往地编写视图模型:
public class MyViewModel { public IEnumerable SelectedValues { get; set; } public IEnumerable Items { get { return new[] { new SelectListItem { Value = "1", Text = "item 1" }, new SelectListItem { Value = "2", Text = "item 2" }, new SelectListItem { Value = "3", Text = "item 3" }, }; } } }
然后一个控制器:
public class HomeController : Controller { public ActionResult Index() { return View(new MyViewModel()); } [HttpPost] public ActionResult Index(MyViewModel model) { return View(model); } }
相应的观点:
@model MyViewModel @using (Html.BeginForm()) { @Html.ListBoxFor(x => x.SelectedValues, Model.Items) }
最后一个与IEnumerable
类型相关联的模型绑定器,它将与插件使用的[]
表示法一起使用:
public class MultiSelectModelBinder : DefaultModelBinder { public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) { var model = (MyViewModel)base.BindModel(controllerContext, bindingContext); var value = bindingContext.ValueProvider.GetValue(bindingContext.ModelName + "[]"); if (value != null) { return value.RawValue; } return model; } }
最后一部分是在Application_Start
注册模型绑定器:
ModelBinders.Binders.Add(typeof(IEnumerable), new MultiSelectModelBinder());
请尝试此选项以获取所选值
public ActionResult Index(MyViewModel model, FormCollection collection) { string selectedValues=collection["SelectedValues[]"]; //here you get comma separated values return View(model); }
实际上,您还可以通过向操作添加参数来接收所选值。
例如,假设您有以下列表框:
//Controller GET public ActionResult ManageUsers() { ViewBag.Users = new SelectList(repository.GetAllUsers(), "Id", "Email"); return View(); } //View @Html.ListBox(ViewBag.Users as SelectList, new { @id = "users" }) //Controller POST [HttpPost] public ActionResult ManageUsers(List users) { //Manage all the selected users which will appear in the List. return View()... }
我相信你可以将数组作为类型而不是通用列表,但是我自己没有尝试过,但关键是将参数命名为与列表框的html元素id相同。
- 将数组从js(jQuery)发送到sql sproc的最佳方法是什么? arrays之间传输的数组
- dropdownoption更改时更新表
- 将JSON数据从Chrome浏览器扩展发布到MVC控制器
- jQuery,MVC3:在modal dialog中提交局部视图表单
- MVC 3 Ajax.ActionLink与JQuery UI确认对话框
- JQuery / JQueryUI hortizontal分隔符
- 多个复选框的自定义DataAnnotation
- 如何在 _Layout.cshtml中使用properties.settings.default
- 使用jquery ajax提交asp.net MVC 3表单