在MVC3中,是否可以在视图中创建可重用的功能?

时间:2011-11-09 17:39:38

标签: asp.net asp.net-mvc-3

我不是在讨论javascript函数,而是用c#编写的服务器端函数。

对于我视图中的html表,我创建的表标题就像可排序的列一样。但是可分类性取决于复杂的逻辑,所以我想把逻辑放到一个函数中,而不是为每一列写入它。

@Amr ElGarhy 感谢您建议客户帮助程序,但我创建的帮助程序类没有被重新启用。

帮助代码:

namespace MyHtmlHelpers
{
    public static class CustomHelpers
    {
        public static string MySortColumn(this HtmlHelper helper, string label, string col, string dir, UrlHelper url)
        {
            return string.Empty;
        }
    }
}

的web.config:

<pages>
  <namespaces>
    <add namespace="System.Web.Helpers" />
    <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.Web.WebPages"/>
    <add namespace="MyHtmlHelpers"/>
  </namespaces>
</pages>

但是在View中,@ HtmlHelper.MySortColumn和@ Html.MySortColumn都没有被重新命名。我在这里错过了什么吗?我甚至重新启动了我的电脑。

更新 在web.config中添加命名空间对我来说不起作用。在视图页面中添加工作。

4 个答案:

答案 0 :(得分:3)

答案 1 :(得分:2)

试试这个

helper syntax

答案 2 :(得分:0)

最好使用逻辑创建基类,并从此类派生您的视图。通常,您不应透露/分享在视图之间重用的任何方法。

答案 3 :(得分:0)

你在使用区域吗?区域有自己的视图文件夹,通常有自己的web.config。如果是这种情况,您可以尝试将命名空间添加到该web.config。

此外,web.config文件通过文件夹分层解析。这意味着您可以在基本区域目录中使用web.config,该目录会影响所有特定于区域的视图。

在我的情况下,我有两个web.config文件,我添加了我的命名空间 - 一个在View目录中,另一个在Area目录中。