【问题标题】:DropDownListFor returning selected itemDropDownListFor 返回选中项
【发布时间】:2012-11-13 18:35:04
【问题描述】:

我的视图中有以下内容:

<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;

返回视图();

这是在我的模型中:

[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; }

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

【问题讨论】:

  • 你还有困难吗?
  • 不,你回答了我的问题,谢谢!

标签: asp.net-mvc razor


【解决方案1】:

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

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

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

【讨论】:

  • 点了。我刚刚为我的列表添加了另一个属性,并为我选择的值添加了一个属性,然后完全删除了 ViewBag。
猜你喜欢
  • 2019-11-20
  • 2021-11-21
  • 2013-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多