Asp.net-Mvc

MVC 視圖找不到我的擴展方法

  • March 5, 2014

我創建了一個擴展方法:

namespace MyComp.Web.MVC.Html
{
   public static class LinkExtensions
   {
       public static MvcHtmlString ActionImageLink(this HtmlHelper htmlHelper, string linkText, string imageSource, string actionName)
       {
           ...
       }
   }
}

我已經從我的 mvc 應用程序中引用了程序集,並且我嘗試在我的視圖中導入命名空間:

<%@ Import Namespace="MyComp.Web.Mvc.Html" %>

我還將它添加到網路配置文件中:

<pages>
   <controls>
       ...
   </controls>
   <namespaces>
       <add namespace="System.Web.Mvc"/>
       <add namespace="System.Web.Mvc.Ajax"/>
       <add namespace="System.Web.Mvc.Html"/>
       <add namespace="System.Web.Routing"/>
       <add namespace="System.Linq"/>
       <add namespace="System.Collections.Generic"/>
       <add namespace="MyComp.Web.Mvc.Html"/>
   </namespaces> 
</pages>

在我看來,如果我嘗試訪問 Html.ActionImageLink,我會收到一條錯誤消息,指出 System.Web.Mvc.HtmlHelper 不包含 ActionImageLink 的定義,它接受 System.Web.Mvc.HtmlHelper 的第一個參數類型。我沒有看到 System.Web.Mvc.HtmlHelper 的任何 ActionLink 擴展方法,僅適用於 System.Web.Mvc.HtmlHelper,那麼它如何適用於 .net 框架,而不適用於我?

請注意聲明和導入時命名空間大小寫的區別。

namespace MyComp.Web.MVC.Html
{
} 

<%@ Import Namespace="MyComp.Web.Mvc.Html" %>
<add namespace="MyComp.Web.Mvc.Html"/>

命名空間區分大小寫!

您必須在web.config中添加命名空間,但在Views 文件夾中

引用自:https://stackoverflow.com/questions/2111145