我希望有人能帮助我。我一直在尝试为我的 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中的更改。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top