簡體   English   中英

不讓我選擇MVC的多個項目的ListBox

[英]ListBoxFor not letting me select multiple items MVC

當我運行代碼時,一次只能選擇一個項目,這很奇怪,因為“ ListBoxFor()”用於選擇多個項目,所以我想要的是:

選擇多個項目

查看(Index.cshtml):

<div>
    @Html.ListBoxFor(m => m.DropDownItems, new MultiSelectList(Repository.DDFetchItems(), "Value", "Text", Model.DropDownItems))
</div>

模型(ModelVariables.cs):

public class ModelVariables
{
    public List<SelectListItem> DropDownItems { get; set; } 
}

public static class Repository
{
    public static List<SelectListItem> DDFetchItems()
    {
        return new List<SelectListItem>()
        {
            new SelectListItem(){  Text = "Dogs", Value = "1", Selected = true},
            new SelectListItem(){  Text = "Cats", Value = "2"},
            new SelectListItem(){  Text = "Death", Value = "3"}
        };
    }
}

控制器(HomeController.cs):

[HttpGet]
public ActionResult Index()
{
    ModelVariables model = new ModelVariables()
    {
        DropDownItems = Repository.DDFetchItems()  
    };
    return View(model);
}

您不能將<select multiple>綁定到復雜對象的集合( List<SelectListItem>就是此對象)。 <select multiple>發布簡單值數組(在您的情況下,如果您選擇第一個和第三個選項,它將提交[1, 3] (所選選項的值)。

您的模型需要綁定IEnumerable<int>屬性。

public class ModelVariables
{
    public IEnumerable<int> SelectedItems { get; set; }
    public IEnumerable<SelectListItem> DropDownItems { get; set; }
}

然后在GET方法中

public ActionResult Index()
{
    var ModelVariables= new ModelVariables()
    {
        DropDownItems = Repository.DDFetchItems(),
        SelectedItems = new List<int>(){ 1, 3 } // to preselect the 1st and 3rd options
    };
    return View(model);
}

並認為

@Html.ListBoxFor(m => m.SelectedItems, Model.DropDownItems)

旁注

  1. 刪除Selected = trueDDFetchItems()方法-它被忽略ListBoxFor()方法,因為你的綁定屬性的它的價值,它確定選擇什么
  2. 無需從ListBoxFor()方法中的第一個列表構建新的相同SelectList (屬性DropDownItems已經是IEumerable<SelectListItem> )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM