Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <%= Html.DropDownList("items", new MultiSelectList(Model.AvailableItems,
- "id", "name", Model.items), new { multiple = "multiple" })%>
- <%= Html.DropDownList("somethingelse", new MultiSelectList(Model.AvailableItems,
- "id", "name", Model.items), new { multiple = "multiple" })%>
- <%= Html.DropDownList("items", new MultiSelectList(Model.AvailableItems,
- "id", "name", Model.items), new { multiple = "multiple" })%>
- <%= Html.DropDownList("somethingelse", new MultiSelectList(Model.AvailableItems,
- "id", "name", Model.items.Select(c=> c.name)), new { multiple = "multiple" })%>
- public class Item
- {
- public int Id { get; set; }
- public string Name { get; set; }
- }
- public class MyModel
- {
- public IEnumerable<int> SelectedItemIds { get; set; }
- public IEnumerable<Item> AvailableItems {
- get
- {
- return new[]
- {
- new Item { Id = 1, Name = "Item 1" },
- new Item { Id = 2, Name = "Item 2" },
- new Item { Id = 3, Name = "Item 3" },
- };
- }
- }
- }
- [HandleError]
- public class HomeController : Controller
- {
- public ActionResult Index()
- {
- var model = new MyModel
- {
- SelectedItemIds = new[] { 2, 3 }
- };
- return View(model);
- }
- [HttpPost]
- public ActionResult Index(IEnumerable<int> selectedItemIds)
- {
- var model = new MyModel
- {
- // Important: Don't ever try to modify the selectedItemIds here
- // The Html helper will completely ignore it and use
- // the POSTed values
- SelectedItemIds = selectedItemIds
- };
- return View(model);
- }
- }
- <% using (Html.BeginForm()) { %>
- <%= Html.ListBoxFor(x => x.SelectedItemIds,
- new MultiSelectList(Model.AvailableItems, "Id", "Name")) %>
- <input type="submit" value="GO" />
- <% } %>
- public static MvcHtmlString ListBoxMultiSelectFor<TModel, TProperty>(
- this HtmlHelper<TModel> helper,
- Expression<Func<TModel, TProperty>> expression,
- IEnumerable<SelectListItem> selectList,
- object htmlAttributes)
- {
- return ListBoxMultiSelectFor(helper, expression, selectList, new RouteValueDictionary(htmlAttributes));
- }
- public static MvcHtmlString ListBoxMultiSelectFor<TModel, TProperty>(
- this HtmlHelper<TModel> helper,
- Expression<Func<TModel, TProperty>> expression,
- IEnumerable<SelectListItem> selectList,
- IDictionary<string, object> htmlAttributes)
- {
- string name = ExpressionHelper.GetExpressionText(expression);
- TagBuilder selectTag = new TagBuilder("select");
- selectTag.MergeAttributes(htmlAttributes);
- selectTag.MergeAttribute("id", name, true);
- selectTag.MergeAttribute("name", name, true);
- foreach (SelectListItem item in selectList)
- {
- TagBuilder optionTag = new TagBuilder("option");
- optionTag.MergeAttribute("value", item.Value);
- if (item.Selected) optionTag.MergeAttribute("selected", "selected");
- optionTag.InnerHtml = item.Text;
- selectTag.InnerHtml += optionTag.ToString();
- }
- return new MvcHtmlString(selectTag.ToString());
- }
- <select ...>
- <option ...>
- <option ...>
- ...
- </select>
- @Html.ListBoxFor(model => model.SelectedCategories,
- new MultiSelectList(Model.Categories, Model.SelectedCategories),
- new { multiple = "multiple" })
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement