我使用此Bootstrap Multiselect,我的问题是我无法在ASP.Net MVC上获取HttpPost上的选定值。
遇到的问题:
单击“保存”后,仅显示第一个选定的值 该模型。 (的解决)
单击“保存”后,仅显示第一个选定的值 下拉列表。
Sample.chtml:
@model SampleProject.Models.SampleViewModel
@using (Html.BeginForm())
{
@Html.DropDownListFor(model => model.Selected, new SelectList(Model.List, "value", "text"), new { @class = "multiselect form-control", multiple = "multiple" })
<input type="submit" value="Save" />
}
型号:
public class SampleViewModel
{
public string[] Selected { get; set; }
public SelectList List { get; set; }
}
控制器:
public class DashboardController : Controller
{
public ActionResult Sample()
{
SampleViewModel model = new SampleViewModel();
model.List = new SelectList(new List<string>() { "1", "2", "3" });
return View(model);
}
[HttpPost]
public ActionResult Sample(SampleViewModel model)
{
model.List = new SelectList(new List<string>() { "1", "2", "3" });
return View(model);
}
}
选择:
我无法在HttpPost上正确获取所选值
代码背后/ HttpPost :(错误)
HttpPost后:(正确)
答案 0 :(得分:12)
A <select multiple="multiple">
发回一组值(不是单个值)。您的财产Selected
必须为IEnumerable
,例如
public string[] Selected { get; set; }
附注:由于text和value属性相同,因此您可以通过List
属性SelectList
public SelectList List { get; set; }
然后在控制器中
model.List = new SelectList(new List<string>() { "1", "2", "3" })
(虽然不清楚为什么你不会使用int
)
答案 1 :(得分:5)
在任何地方都没有看到这个答案,所以要在帖子后面只选择一个项目来解决问题,你需要使用:
@Html.ListBoxFor(..
instead of @Html.DropDownListFor