在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中添加命名空间对我无效。添加查看页面的作品。
最好用逻辑创建基类并从这个类派生你的视图。通常你不应该透露/分享任何方法在视图之间重复使用。
意图是在相同的视图内重复使用,而不是共享其他视图。 –
为什么这个功能需要被隔离到只有一个视图?是否存在未提及的安全问题? –
我正在创建一个实用程序类/编码方便的方法。 –
你使用区域?区域有自己的视图文件夹,通常有自己的web.config。如果是这样的话,你可以尝试添加命名空间到该web.config。
此外,web.config文件通过文件夹分层解析。这意味着您可以在影响所有区域特定视图的基本Area目录中拥有web.config。
在我的情况下,我有两个web.config文件,我添加了我的命名空间 - 一个在View目录中,另一个在Area目录中。
我没有使用区域。但我可以在View页面上添加“使用”语句。 –
尝试添加此视图的第一行:'@using MyHtmlHelpers' –