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

时间:2016-09-16 21:12:25

标签: c# asp.net-mvc asp.net-mvc-4 razor asp.net-mvc-5

我正在尝试使用带有ASP.NET MVC 5的Razor模板引擎构建表单。

我有以下封装的调用,我将其传递给主视图

public class ManagePresenter
{

    public ActionFormViewModel ActionForm { get; set; }

    public List<SelectListItem> Users { get; set; }
}

然后我有了这个观点

@using(Html.BeginForm("Index", "Manage", FormMethod.Post, new { @class = "form-inline", Id = "ManageEmployeeForm" }))
{

    Html.AntiForgeryToken();
    Html.HiddenFor(m => m.ActionForm.From);
    Html.HiddenFor(m => m.ActionForm.To);

    <div class="form-group">

    @{
        Html.LabelFor(m => m.ActionForm.UserId, new { @class = "sr-only" });
        Html.DropDownListFor(x => x.ActionForm.UserId, Model.Users, new { @Class = "form-control" });
        Html.ValidationMessageFor(m => m.ActionForm.UserId);
    }

    </div>

    <div class="checkbox">
        <label>
            <label>
                @Html.CheckBoxFor(m => m.ActionForm.ShowAlternateEntries, new { Title = "Alternate entries are entries from the telephony system that will help you compare against manual entries" })
            </label>
        </label>
    </div>

    <button type="submit" class="btn btn-primary" id="ManageEmployeeGetTime">View Records</button>

}

但每次运行我的应用程序时都会出现以下错误

  

CS1928:'System.Web.Mvc.HtmlHelper'   不包含'DropDownListFor'的定义和最佳定义   扩展方法重载   “System.Web.Mvc.Html.SelectExtensions.DropDownListFor&LT; TModel的,TProperty&GT;(System.Web.Mvc.HtmlHelper&LT; TModel的&gt;中   System.Linq.Expressions.Expression&gt;中   System.Collections.Generic.IEnumerable&LT; System.Web.Mvc.SelectListItem&gt;中   对象)'有一些无效的参数

可能导致此错误的原因是什么? Model.UsersList<SelectListItem>

我在这里缺少什么?

1 个答案:

答案 0 :(得分:1)

错误意味着(在您的情况下)DropDownListFor()方法的一个参数无效,从逻辑上讲,这只能是第二个参数(IEnumerable<SelectListItem>)。

您声明该模型包含属性public List<SelectListItem> Users { get; set; },因此您要么创建了自己的名为SelectListItem的类,要么已包含对System.Web.WebPages.Html的引用并使用{{1}该程序集的类而不是SelectListItem的{​​{1}}类。

通常,您不需要SelectListItem,但如果由于某种原因,您可以在模型中使用类的完全限定名称

System.Web.Mvc

作为旁注,您的视图不会生成任何表单控件(ckeckbox和submit按钮除外)。您没有为System.Web.WebPages.Html方法添加public List<System.Web.Mv.SelectListItem> Users { get; set; } 前缀,这意味着该方法将被执行,但结果将不会在视图中输出。您需要将视图更改为

HtmlHelper