ASP.NET MVC MultiSelectList with selected values not selecting properly

后端 未结 6 1143
猫巷女王i
猫巷女王i 2020-12-02 17:09

I know others have asked this question, but I\'m totally confused by this:

This displays the dropdown with no values selected:

<%= Html.DropDownLi         


        
6条回答
  •  萌比男神i
    2020-12-02 17:44

    Too little context provided in your question but I will try to show a full working example:

    Model:

    public class Item
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }
    
    public class MyModel
    {
        public IEnumerable SelectedItemIds { get; set; }
        public IEnumerable 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" },
                };
            } 
        }
    }
    

    Controller:

    [HandleError]
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            var model = new MyModel
            {
                SelectedItemIds = new[] { 2, 3 }
            };
            return View(model);
        }
    
        [HttpPost]
        public ActionResult Index(IEnumerable 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);
        }
    }
    

    View:

    <% using (Html.BeginForm()) { %>
        <%= Html.ListBoxFor(x => x.SelectedItemIds, 
            new MultiSelectList(Model.AvailableItems, "Id", "Name")) %>
        
    <% } %>
    

    Notice that the Html.ListBoxFor is more adapted if you want to generate a multiple select. Obviously the AvailableItems property should be fetched from a repository.

提交回复
热议问题