ASP.NET MVC html 帮助程序不工作
-
07-07-2019 - |
题
我希望有人能帮助我。我一直在尝试为我的 MVC 应用程序编写一个自定义 html 帮助器。首先,我尝试了一个测试,它只写了一个
指定参数的标签。问题是,除非我显式导入名称空间,否则它不起作用。我读了很多书,当我读到时,该方法应该在没有导入命名空间的情况下出现,如下所示:
<%=Html.Prueba("This is a paragraph") %>
但这个方法,Prueba,并没有出现在 VS Intellisense 中。
我的班级如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.Mvc;
namespace EasyGoCostaRica.Helpers
{
public static class ViewsHelpers
{
//This method is just for testing. Is not working :(
public static string Prueba(this HtmlHelper helper, string param1)
{
return string.Format("<p>{0}</p>", param1);
}
}
}
提前致谢!
解决方案
命名空间 必须是 在某处声明/进口。您可以这样做:
- 在页面本身内
- 母版页或
- 在 web.config 文件内
如果你想要什么 全球的 最好在 web.config 中配置您的命名空间。
使用 <@import...>
前两个指令和 <namespace>
最后一个的配置元素。
其他提示
您可以将命名空间添加到web.config中,然后您不必再担心它。
在你的web.config中,你应该看到如下内容:
<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"/>
</namespaces>
只需在命名空间中添加一行。
如果您不希望全局导入帮助程序,则每个目录都可以拥有自己的web.config。除非特别设置,否则那些<!>“sub <!>”; web.configs将继承更高web.configs的设置。如果你走这条路线,要预先警告,一些设置只能在应用程序级别设置。它可能会很快混淆。
出于某些原因,在visual studio 2013中,您必须重新启动vs才能应用web.config中的更改。
不隶属于 StackOverflow