System.Web.Mvc.HtmlHelper不包含' DropDownListFor'的定义。

时间:2015-01-06 06:37:34

标签: c# asp.net-mvc linq asp.net-mvc-4 dropdownlistfor

我得到一个运行时异常,如下所示,编译源代码没有显示任何问题。 @ 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>)包含一些无效参数

2 个答案:

答案 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)