Asp.net mvc 3 枚举的数据类型应该是什么<;选择列表项>;
我使用的是mvc 3 razor,问题是使用razor助手在数据库中记录dropdownlist值:Asp.net mvc 3 枚举的数据类型应该是什么<;选择列表项>;,asp.net-mvc-3,razor,model-binding,Asp.net Mvc 3,Razor,Model Binding,我使用的是mvc 3 razor,问题是使用razor助手在数据库中记录dropdownlist值: @Html.DropDownListFor(m => m.Question, (IEnumerable<SelectListItem>)ViewBag.QuestionList) @Html.DropDownListFor(m=>m.Question,(IEnumerable)ViewBag.QuestionList) 这里,我的视图使用模型绑定。在数据库中,问题列是
@Html.DropDownListFor(m => m.Question, (IEnumerable<SelectListItem>)ViewBag.QuestionList)
@Html.DropDownListFor(m=>m.Question,(IEnumerable)ViewBag.QuestionList)
这里,我的视图使用模型绑定。在数据库中,问题列是sting数据类型(varchar),在运行应用程序时,在提交表单后显示以下错误
The ViewData item that has the key 'Question' is of type 'System.String' but must be of type 'IEnumerable<SelectListItem>'.
具有键'Question'的ViewData项的类型为'System.String',但必须为'IEnumerable'类型。
我应该在这里更改什么以避免错误我必须使用模型绑定
我应该在这里更改什么以避免错误我必须使用模型绑定
您应该确保在呈现此视图的控制器操作中,您已使用IEnumerable
填充了ViewBag.QuestionList
属性。当重新显示包含此下拉列表的同一视图时,人们通常会忘记在POST操作中执行此操作:
IEnumerable<SelectListItem> items = ...
ViewBag.QuestionList = items;
return View(someModel);
IEnumerable items=。。。
ViewBag.QuestionList=项目;
返回视图(someModel);
还要确保模型上的Question属性是标量类型(字符串、整数等),而不是复杂类型。如果是复杂类型,则需要选择相应的标量属性以将选定值绑定到:
@Html.DropDownListFor(
m => m.Question.QuestionId,
(IEnumerable<SelectListItem>)ViewBag.QuestionList
)
@Html.DropDownListFor(
m=>m.Question.QuestionId,
(IEnumerable)ViewBag.QuestionList
)
您完全正确,我忘记在HTTPOST操作中传递viewbag项。谢谢