ASP.NET MVC 4 Razor视图无法识别Dropdownlistfor HTML Helper

Nis*_*Roy 5 asp.net-mvc-4 razor-2

我正在尝试将一个下拉列表添加到强类型剃刀视图中.ASP.Net MVC 4.0,Razor View引擎版本2.0.0.0

@using System;
@model SampleApp.Models.ServiceRequestModel

@{
  ViewBag.Title = "ServiceRequest";
}

@Html.DropDownListFor(m=>m.CategoryID, Model.Categories)
Run Code Online (Sandbox Code Playgroud)

模型如下:

public class ServiceRequestModel
{
    public int ID { get; set; }
    public int CategoryID { get; set; }

    public SelectList Category { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

它始终在CSHTML文件中的intellisense中显示错误:

System.Web.WebPages.Html.HtmlHelper'不包含'DropDownListFor'的定义,并且没有扩展方法'DropDownListFor'接受类型'System.Web.WebPages.Html.HtmlHelper'的第一个参数可以找到(你错过了吗?) using指令或程序集引用?)

它也给出了以下错误:

错误3当前上下文中不存在名称"model"

我检查了View文件夹中的web.config:

<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
  <namespaces>
    <add namespace="System.Web.Mvc" />
    <add namespace="System.Web.Mvc.Ajax" />
    <add namespace="System.Web.Mvc.Html" />
    <add namespace="System.Web.Routing" />
  </namespaces>
</pages>
Run Code Online (Sandbox Code Playgroud)

Nis*_*Roy 1

下面的配置代码行必须更改为 4.0.0.0

<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, **Version=3.0.0.0**, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
Run Code Online (Sandbox Code Playgroud)

变成

<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, **Version=4.0.0.0**, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
Run Code Online (Sandbox Code Playgroud)