How does a multiple select list work with model binding in ASP.NET MVC?

后端 未结 3 1234
梦毁少年i
梦毁少年i 2020-12-04 17:21

If you have a select list set to multiple in ASP.NET MVC, how does the modelbinding work?

What does it return for your selected items, an array?

<         


        
相关标签:
3条回答
  • 2020-12-04 17:59

    In VegTableViewmodel:

    public IEnumerable<MultiSelectList> Vegetables { get; set; }
    

    In the Controller: Get vegetables list, and then pass it to the VegTableViewModel's Vegetables property.

    viewmodel.Vegetables = vegetables .Select(d => new MultiSelectList(d.VegName));
    

    In the View:

    @Html.ListBoxFor(m => m.L, new MultiSelectList(Model.Vegetables.Select(d => d.Items))
    
    0 讨论(0)
  • 2020-12-04 18:04

    Yes, by default a multiselectlist will post through an array of the selected values.

    This article has further information, including how to use strongly-typed views with a multiselectlist.

    From the linked "article":

    • Your model or view model class needs a collection property for the IDs for the selected option items, e.g. List<int> ToppingIds.
    • In the controller action method to which the form containing your multi-select-list POSTs, you can access the selected option items thru the collection property you added to the model or view model class.
    0 讨论(0)
  • 2020-12-04 18:12

    Yes, it returns an array.

    View model:

    public class MyViewModel
    {
        public int[] SelectedIds { get; set; }
        public IEnumerable<SelectListItem> Items { get; set; }
    }
    

    Controller:

    public ActionResult Index()
    {
        var model = new MyViewModel
        {
            // fetch the items from some data source
            Items = Enumerable.Select(x => new SelectListItem
            {
                Value = x.Id,
                Text = "item " + x.Id
            })
        };
        return View(model);
    }
    

    View:

    @model MyViewModel
    @Html.ListBoxFor(x => x.SelectedIds, Model.Items)
    
    0 讨论(0)
提交回复
热议问题