我的视图:
中有以下内容<div class="editor-field">
@Html.DropDownListFor(x => x.Subject, (IEnumerable<SelectListItem>) ViewBag.Clients)
</div>
这就是我调用视图的方式:
var list = new List<SelectListItem>
{
new SelectListItem {Text = "Gas Order", Value = "delivery"},
new SelectListItem {Text = "Account Services", Value = "account"},
new SelectListItem {Text = "Service Call", Value = "service"},
new SelectListItem {Text = "Inquiry", Value = "inquiry"}
};
ViewBag.Clients = list;
返回View();
这是我的模型:
[Required]
[StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
[DataType(DataType.Text)]
[Display(Name = "Subject")]
public string Subject { get; set; }
我正在尝试返回所选的值。
当我因屏幕上的错误而重新加载屏幕时,我收到此错误:
具有“主题”键的ViewData项是类型 'System.String'但必须是'IEnumerable'类型。
我认为这是由于这一行:
public string Subject { get; set; }
如果是这种情况,如何将所选项目恢复到我的模型?
答案 0 :(得分:1)
当我因屏幕上的错误而重新加载屏幕时,我收到此错误...
确保ViewBag.Clients
在刷新时具有正确的值。
这就是为什么你应该避免使用ViewBag
并仅使用ViewModel
将所有相关数据放在那里。