我正在构建一个 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/