asp.net-mvc - MVC View 找不到我的扩展方法

标签 asp.net-mvc asp.net-mvc-2 extension-methods

我创建了一个扩展方法:

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

我已经从我的 mvc 应用程序引用了程序集,并且尝试在我的 View 中导入命名空间:

<%@ 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 不包含接受 System.Web.Mvc.HtmlHelper 第一个参数类型的 ActionImageLink 的定义。我没有看到 System.Web.Mvc.HtmlHelper 的任何 ActionLink 扩展方法,仅适用于 System.Web.Mvc.HtmlHelper,那么它如何适用于 .net 框架,而不适用于我?

最佳答案

请注意声明和导入时 namespace 大小写的差异。

namespace MyComp.Web.MVC.Html
{
} 

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

命名空间区分大小写!

关于asp.net-mvc - MVC View 找不到我的扩展方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2111145/

相关文章:

asp.net-mvc - Razor 中的条件链接

asp.net-mvc - .NET MVC的理想文件夹结构

asp.net-mvc-2 - MVC 源代码单例模式

swift - 如何使用 tochesBegan() 方法作为类的扩展?

javascript - 从 knockout 应用绑定(bind)中排除 DOM 元素?

asp.net - asp.net Web API 与发出 JSON 的 asp.net MVC Controller 的性能?

c# - 我应该在哪里设置语言(CurrentThread.CurrentCulture)?

c# - 扩展 Control 以提供始终如一的安全 Invoke/BeginInvoke 功能是否合适?

go - 我可以通过 GO 中的方法扩展错误接口(interface)吗?

asp.net-mvc - 从 mvc 4 (4.5) 升级到 mvc 5 (4.5.1)