这是我在MultiSelectList中显示名单列表的代码
控制器
// GET
public ActionResult Create()
{
var bookViewModel = new BookViewModel
{
AuthorList = _Authors.GetAuthors()
.Select(a => new SelectListItem {
Value = a.Id.ToString(),
Text = a.Name }
).ToList()
};
return View(bookViewModel);
}
// POST
[HttpPost]
public ActionResult Create(BookViewModel model)
{
if (ModelState.IsValid)
{
//Some code
}
else
{
return View(model);
}
}
查看
@using (Html.BeginForm())
{
...
@Html.ListBoxFor(m => m.AuthorIds, Model.AuthorList, new { multiple = "multiple" })
<input id="btnCreate" type="submit" value="Create" />
}
如果Model validetes,但是如果ModelState.IsValid = false
,当它将模型返回到视图(.. else { return View(model); }
)时,此代码可以正常工作,模型不包含AuthorList
并显示错误
没有类型为'IEnumerable'的ViewData项 有'AuthorIds'键。
在视图行@Html.ListBoxFor(m => m.AuthorIds, Model.AuthorList....
知道如何解决这个问题吗?
答案 0 :(得分:1)
您需要在其他部分再次初始化作者列表
else
{
model.AuthorList = _Authors.GetAuthors()
.Select(a => new SelectListItem {
Value = a.Id.ToString(),
Text = a.Name }
).ToList()
return View(model);
}