在MVC3中,是否有可能在视图中创建可重用的函数?

问题描述:

我不是在谈论javascript函数,而是用c#编写的服务器端函数。在MVC3中,是否有可能在视图中创建可重用的函数?

对于我的视图中的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> 

但考虑,既不@ HtmlHelper.MySortColumn也不@ Html.MySortColumn被regonized。我在这里错过了什么吗?我甚至重新启动了我的电脑。

UPDATE 在web.config中添加命名空间对我无效​​。添加查看页面的作品。

+0

尝试添加此视图的第一行:'@using MyHtmlHelpers' –

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

+0

意图是在相同的视图内重复使用,而不是共享其他视图。 –

+0

为什么这个功能需要被隔离到只有一个视图?是否存在未提及的安全问题? –

+0

我正在创建一个实用程序类/编码方便的方法。 –

试试这个

helper syntax

+0

不错的选择。 –

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

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

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

+0

我没有使用区域。但我可以在View页面上添加“使用”语句。 –