【问题标题】:ASP.NET MVC 4 Razor view not recognizing Dropdownlistfor HTML HelperASP.NET MVC 4 Razor 视图无法识别 HTML Helper 的下拉列表
【发布时间】:2012-11-07 11:07:44
【问题描述】:

我正在尝试将下拉列表添加到强类型剃须刀视图中。 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)

型号如下:

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

    public SelectList Category { get; set; }
}

它总是在 CSHTML 文件中显示智能感知错误:

System.Web.WebPages.Html.HtmlHelper' 不包含“DropDownListFor”的定义,并且无法找到接受“System.Web.WebPages.Html.HtmlHelper”类型的第一个参数的扩展方法“DropDownListFor”(您是否缺少 using 指令或程序集引用?)

而且它也给出错误:

错误 3 当前上下文中不存在名称“模型”

我已经检查了 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>

【问题讨论】:

  • 你找到解决这个问题的方法了吗?
  • 是的,这已经解决了。上面配置中 Host factory 的行指向了一个错误的版本,它应该是 3.0.0.0 如下:
  • 您介意提供这个作为答案吗?它将帮助有类似问题的用户。

标签: asp.net-mvc-4 razor-2


【解决方案1】:

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

<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, **Version=3.0.0.0**, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />

改为

<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, **Version=4.0.0.0**, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />

【讨论】:

    【解决方案2】:

    我在这个错误上花了一天多的时间,它最终成为与下拉列表的 VM 数据源的数据类型冲突(即它不是 IEnumerable 类型的列表)。出于某种原因,VS2012 认为错误出在命名空间上,即使它出现在 Intellipath 中。

    【讨论】:

      【解决方案3】:

      我遇到了这个确切的问题(仅限 html.displayFor)。

      我不确定它是如何开始的,但我通过替换以下内容解决了它:

      <appSettings>
          <add key="webpages:Enabled" value="false" />
      </appSettings>
      

      <appSettings>
          <add key="webpages:Version" value="3.0.0.0" />
      </appSettings>
      

      在 View 文件夹的 Web.config 文件中。

      找到我的解决方案here

      【讨论】:

        猜你喜欢
        • 2011-08-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多