DropDownListFor返回所选项目

时间:2012-11-13 18:35:04

标签: asp.net-mvc razor

我的视图

中有以下内容
<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; }

如果是这种情况,如何将所选项目恢复到我的模型?

1 个答案:

答案 0 :(得分:1)

  

当我因屏幕上的错误而重新加载屏幕时,我收到此错误...

确保ViewBag.Clients在刷新时具有正确的值。

这就是为什么你应该避免使用ViewBag并仅使用ViewModel 将所有相关数据放在那里。