Advertisement
Guest User

Untitled

a guest
Nov 27th, 2014
171
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.43 KB | None | 0 0
  1. <%= Html.DropDownList("items", new MultiSelectList(Model.AvailableItems,
  2. "id", "name", Model.items), new { multiple = "multiple" })%>
  3.  
  4. <%= Html.DropDownList("somethingelse", new MultiSelectList(Model.AvailableItems,
  5. "id", "name", Model.items), new { multiple = "multiple" })%>
  6.  
  7. <%= Html.DropDownList("items", new MultiSelectList(Model.AvailableItems,
  8. "id", "name", Model.items), new { multiple = "multiple" })%>
  9.  
  10. <%= Html.DropDownList("somethingelse", new MultiSelectList(Model.AvailableItems,
  11. "id", "name", Model.items.Select(c=> c.name)), new { multiple = "multiple" })%>
  12.  
  13. public class Item
  14. {
  15. public int Id { get; set; }
  16. public string Name { get; set; }
  17. }
  18.  
  19. public class MyModel
  20. {
  21. public IEnumerable<int> SelectedItemIds { get; set; }
  22. public IEnumerable<Item> AvailableItems {
  23. get
  24. {
  25. return new[]
  26. {
  27. new Item { Id = 1, Name = "Item 1" },
  28. new Item { Id = 2, Name = "Item 2" },
  29. new Item { Id = 3, Name = "Item 3" },
  30. };
  31. }
  32. }
  33. }
  34.  
  35. [HandleError]
  36. public class HomeController : Controller
  37. {
  38. public ActionResult Index()
  39. {
  40. var model = new MyModel
  41. {
  42. SelectedItemIds = new[] { 2, 3 }
  43. };
  44. return View(model);
  45. }
  46.  
  47. [HttpPost]
  48. public ActionResult Index(IEnumerable<int> selectedItemIds)
  49. {
  50. var model = new MyModel
  51. {
  52. // Important: Don't ever try to modify the selectedItemIds here
  53. // The Html helper will completely ignore it and use
  54. // the POSTed values
  55. SelectedItemIds = selectedItemIds
  56. };
  57. return View(model);
  58. }
  59. }
  60.  
  61. <% using (Html.BeginForm()) { %>
  62. <%= Html.ListBoxFor(x => x.SelectedItemIds,
  63. new MultiSelectList(Model.AvailableItems, "Id", "Name")) %>
  64. <input type="submit" value="GO" />
  65. <% } %>
  66.  
  67. public static MvcHtmlString ListBoxMultiSelectFor<TModel, TProperty>(
  68. this HtmlHelper<TModel> helper,
  69. Expression<Func<TModel, TProperty>> expression,
  70. IEnumerable<SelectListItem> selectList,
  71. object htmlAttributes)
  72. {
  73. return ListBoxMultiSelectFor(helper, expression, selectList, new RouteValueDictionary(htmlAttributes));
  74. }
  75.  
  76. public static MvcHtmlString ListBoxMultiSelectFor<TModel, TProperty>(
  77. this HtmlHelper<TModel> helper,
  78. Expression<Func<TModel, TProperty>> expression,
  79. IEnumerable<SelectListItem> selectList,
  80. IDictionary<string, object> htmlAttributes)
  81. {
  82. string name = ExpressionHelper.GetExpressionText(expression);
  83.  
  84. TagBuilder selectTag = new TagBuilder("select");
  85. selectTag.MergeAttributes(htmlAttributes);
  86. selectTag.MergeAttribute("id", name, true);
  87. selectTag.MergeAttribute("name", name, true);
  88. foreach (SelectListItem item in selectList)
  89. {
  90. TagBuilder optionTag = new TagBuilder("option");
  91. optionTag.MergeAttribute("value", item.Value);
  92. if (item.Selected) optionTag.MergeAttribute("selected", "selected");
  93. optionTag.InnerHtml = item.Text;
  94. selectTag.InnerHtml += optionTag.ToString();
  95. }
  96.  
  97. return new MvcHtmlString(selectTag.ToString());
  98. }
  99.  
  100. <select ...>
  101. <option ...>
  102. <option ...>
  103. ...
  104. </select>
  105.  
  106. @Html.ListBoxFor(model => model.SelectedCategories,
  107. new MultiSelectList(Model.Categories, Model.SelectedCategories),
  108. new { multiple = "multiple" })
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement