[英]How to select multiple items from ListBoxFor and pass to controller Post method
[英]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)
旁注
Selected = true
的DDFetchItems()
方法-它被忽略ListBoxFor()
方法,因為你的綁定屬性的它的價值,它確定選擇什么 ListBoxFor()
方法中的第一個列表構建新的相同SelectList
(屬性DropDownItems
已經是IEumerable<SelectListItem>
)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.