【问题标题】:HtmlHelper does not contain definition for "Action"HtmlHelper 不包含“操作”的定义
【发布时间】:2011-02-20 07:20:28
【问题描述】:

我使用 并出现此错误:

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

如何解决

这是我的程序集:

   <assemblies>
    <add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
    <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add assembly="System.Web.Abstractions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add assembly="System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add assembly="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
    <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
    <add assembly="System.Data.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
    <add assembly="System.Data.Entity, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />

  </assemblies>

【问题讨论】:

    标签: asp.net asp.net-mvc


    【解决方案1】:

    Action 是包含在System.Web.Mvc 程序集中的扩展方法。确保您在 web.config 中引用了以下命名空间:

    <pages>
      <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>
    

    该方法在System.Web.Mvc.Html 命名空间中声明。

    同时确保您的项目是 ASP.NET MVC 2.0 this method has been added in the 2.0 版本。

    【讨论】:

    • 我在 web.config 中有那个命名空间
    • 您使用的是 ASP.NET MVC 2.0,System.Web.Mvc 程序集版本应该是 2.0.0.0?
    • 是的,我正在使用 ASP.NET MVC 2.0
    • 我已经安装了 ASP.NET MVC 2 Preview 2,是这个问题
    • ASP.NET MVC 2.0 现在是 RTM。当您可以使用最终版本时,为什么还要安装测试版和预览版?我不确定在哪个 beta 版本中引入了这种方法。可以肯定的是,它在 1.0 RTM 中不存在,而在 2.0 RTM 中存在。您可以探索使用反射器的System.Web.Mvc 程序集,以验证此扩展方法不存在。
    【解决方案2】:

    确保您的项目中有对System.Web.Mvc 的引用(如果还没有,请添加它)。

    然后确保显示此问题的类正在导入命名空间 - 您可以通过以下几种方式做到这一点:

    • 在后面的代码顶部添加using System.Web.Mvc; 语句。
    • 如果需要,您也可以直接在aspx 页面中导入命名空间,使用以下语句:&lt;%@ import namespace="System.Web.Mvc"%&gt;

    【讨论】:

      【解决方案3】:

      如果您想获取内部操作方法的 url,即您可以执行的控制器:

      var baseUrl = "http://localhost:12345";
      var urlHelper = new UrlHelper(HttpContext.Current.Request.RequestContext);
      var resource = urlHelper.Action("Home", "Index");
      var uri = new Uri($"{baseUrl}{resource}");
      Console.WriteLine(uri.ToString()); // ==> http://localhost:12345/Home/Index
      

      【讨论】:

        猜你喜欢
        • 2021-07-12
        • 2016-10-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多