6

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

}

提前致谢!

4

3 回答 3

13

命名空间必须在某处声明/导入。您可以这样做:

  • 在页面本身内
  • 母版页或
  • 在 web.config 文件中

如果你想要一些全局的东西,最好在 web.config 中配置你的命名空间。

前两个使用<@import...>指令,<namespace>最后一个使用配置元素。

于 2009-09-15T05:46:28.570 回答
7

出于某种原因,在 Visual Studio 2013 中,您必须重新启动 vs 才能应用 web.config 中的更改。

于 2013-12-08T13:03:16.563 回答
6

您可以将命名空间添加到 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。除非特别设置,否则那些“子”web.configs 将从更高的 web.configs 继承设置。如果你走这条路,请注意,某些设置只能在应用程序级别进行设置。它会很快变得混乱。

于 2009-09-15T05:46:33.623 回答