0

我正在使用 mvc 3 razor,问题是使用 razor helpers 在数据库中记录下拉列表值:

 @Html.DropDownListFor(m => m.Question,   (IEnumerable<SelectListItem>)ViewBag.QuestionList)

在这里,我的观点是使用模型绑定。在数据库中,问题列是 sting 数据类型(varchar),并且在运行应用程序时,它在提交表单后显示以下错误

The ViewData item that has the key 'Question' is of type 'System.String' but must be of type 'IEnumerable<SelectListItem>'.

我应该在这里改变什么以避免错误在这里我必须使用模型绑定。

4

1 回答 1

0

我应该在这里改变什么以避免错误在这里我必须使用模型绑定。

您应该确保在呈现此视图的控制器操作中,您已ViewBag.QuestionList使用IEnumerable<SelectListItem>. 当重新显示包含此 DropDown 的同一视图时,人们通常会忘记在他们的 POST 操作中执行此操作:

IEnumerable<SelectListItem> items = ... 
ViewBag.QuestionList = items;
return View(someModel);

还要确保模型上的 Question 属性是标量类型(字符串、整数、...)而不是复杂类型。如果是复杂类型,则需要选择对应的标量属性将选中的值绑定到:

@Html.DropDownListFor(
    m => m.Question.QuestionId, 
    (IEnumerable<SelectListItem>)ViewBag.QuestionList
)
于 2012-08-23T09:06:57.853 回答