asp.net-mvc - 为什么我的 HtmlHelper 扩展不起作用?

标签 asp.net-mvc extension-methods html-helper

我正在构建一个 ASP.Net MVC 网站。与其将所有内容都放在一个项目中,我决定将 Web、模型和 Controller 分离到同一个解决方案中的不同项目中,这些项目相互引用。

引用是这样的:

Web ---[references]---> Controller ---[references]---> Model



现在我想向 HtmlHelper 类添加 2 个自定义方法 - 它们称为“IncludeScript”和“IncludeStyle”。它们每个都接受一个字符串参数,并分别生成一个脚本或链接标签。

根据网络上的文档,我创建了一个扩展器类,并编写了这两种方法并编译了应用程序。

现在,当我进入 Public.Master 页面(这是我的主母版页面,也是我打算使用这些方法的地方之一)时,我可以输入如下代码:
<%= Html.IncludeScript("\js\jquery.js") %>
IntelliSense 选择 IncludeScript 方法并向我展示语法就好了。所以我希望一切正常。

但事实并非如此。

一切都会编译,但只要我运行应用程序,我就会从 Default.aspx.cs 的第 14 行收到以下运行时错误:
c:\\Projects\\PhoneReel\\PhoneReel.Web\\Views\\Shared\\Public.Master(11): error CS0117: 'System.Web.Mvc.HtmlHelper' does not contain a definition for 'IncludeScript'
这是发生错误的代码行:
httpHandler.ProcessRequest(HttpContext.Current);
任何想法这里可能会出错?

最佳答案

检查以确保我们的 View 可以访问您的扩展的命名空间。在您看来,您需要的是:

<%@ Import Namespace="MyRootNamespace.NamespaceForMyHtmlHelperExtensions"%>

或者在你的 web 配置命名空间部分:
<add namespace="MyRootNamespace.NamespaceForMyHtmlHelperExtensions"/>

关于asp.net-mvc - 为什么我的 HtmlHelper 扩展不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/217350/

相关文章:

asp.net-mvc - EditorFor 忽略 tabindex。你如何设置tabindex?

c# - 获取选项从 html 选择到 MVC c# Controller

C# ASP.net MVC 数据库问题

c# - MVC 删除删除不相关的数据

jQuery 验证小数点分隔符和 Asp.net MVC

c# - MVC 框架未调用自定义 AuthorizeAttribute

Swift:Extension中的这句话是什么意思?

c# - 通用扩展方法比非通用扩展方法慢

c# - 在 LINQ 查询中对基类使用扩展方法

c# - MVC3 如何使用@<text></text> 作为 html 辅助参数