我得到一个运行时异常,如下所示,编译源代码没有显示任何问题。 @ html.TextBoxFor()没有发生这个问题,为什么DropDownListFor会发生这种情况?
@Html.DropDownListFor(m => m.EView.EStatusId, @Model.EView.EStatus)
public class EView
{
#region Constructor
public EView()
{
this.EDataView = new EDataViewModel();
}
#endregion
#region Properties
public int EStatusId { get; set; }
public EDataViewModel EDataView { get; set; }
public IEnumerable<SelectListItem> EStatus
{
get {
SelectListItem item = null;
List<SelectListItem> status = null;
status = new List<SelectListItem>();
item = new SelectListItem();
item.Text = "Open";
item.Value = "1";
status.Add(item);
item = new SelectListItem();
item.Text = "Closed";
item.Value = "2";
status.Add(item);
return status;
}
}
#endregion
}
System.Web.Mvc.HtmlHelper<EApp.ViewModels.AdminViewModel>
不包含DropDownListFor
的定义,最佳扩展方法重载System.Web.Mvc.Html.SelectExtensions.DropDownListFor<TModel,TProperty>(System.Web.Mvc.HtmlHelper<TModel>, System.Linq.Expressions.Expression<System.Func<TModel,TProperty>>, System.Collections.Generic.IEnumerable<System.Web.Mvc.SelectListItem>)
包含一些无效参数
答案 0 :(得分:3)
使用错误的SelectListItem类型可能导致此错误。当我按下Ctrl-时,我无意中选择了错误的命名空间。在我未解析的SelectListItem类型声明上。我选择了System.Web.WebPages.Html而不是System.Web.Mvc。这导致了View中的半隐形运行时错误。解决方案是通过在using语句中使用正确的命名空间,或者通过完全限定SelectListItem类型(如果需要)来确保在Controller,ViewModel等中使用正确的SelectListItem类型。 (希望不需要......)
答案 1 :(得分:0)
我知道有点晚了,但是如何放弃&#39; @&#39;在Model.EView.EStatus?
之前所以:
@Html.DropDownListFor(m => m.EView.EStatusId, Model.EView.EStatus)