当前位置:  开发笔记 > 编程语言 > 正文

为什么我的HtmlHelper扩展不起作用?

如何解决《为什么我的HtmlHelper扩展不起作用?》经验,为你挑选了2个好方法。

我正在建立一个ASP.Net MVC网站.我决定将Web,模型和控制器分离到同一解决方案中的不同项目,而不是将所有内容都放在一个项目中.

引用如下:

Web --- [参考文献] --->控制器--- [参考文献] --->模型

现在我想为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);

有什么想法可能会出错吗?



1> Tim Scott..:

检查以确保我们的视图可以访问扩展的命名空间.您需要在视图中使用以下内容:

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

或者在您的Web配置命名空间部分中:




2> Ben Lesh..:

如果您使用强类型视图,并且扩展方法正在扩展HtmlHelper,则不会找到扩展名.你必须创建一个通用的扩展延伸HtmlHelper.

public static string IncludeScript(this HtmlHelper html, string url) {
   return "";
}

然后你会看到你的扩展器方法出现了.

我希望有所帮助.

推荐阅读
牛尾巴2010
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有