Asp.net 在MVC3中,是否可以在视图中创建可重用的函数?
我说的不是javascript函数,而是用c编写的服务器端函数 对于视图中的html表,我正在创建类似于可排序列的表头。但是可排序性取决于一个复杂的逻辑,所以我想把逻辑放到一个函数中,而不是为每一列编写它 @阿姆尔加里 感谢您建议customer helper,但是我创建的helper类没有被重新定义 助手代码:Asp.net 在MVC3中,是否可以在视图中创建可重用的函数?,asp.net,asp.net-mvc-3,Asp.net,Asp.net Mvc 3,我说的不是javascript函数,而是用c编写的服务器端函数 对于视图中的html表,我正在创建类似于可排序列的表头。但是可排序性取决于一个复杂的逻辑,所以我想把逻辑放到一个函数中,而不是为每一列编写它 @阿姆尔加里 感谢您建议customer helper,但是我创建的helper类没有被重新定义 助手代码: namespace MyHtmlHelpers { public static class CustomHelpers { public static
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都没有被重新定义。我是不是遗漏了什么?我甚至重新启动了我的电脑
更新
在web.config中添加命名空间对我不起作用。添加视图页面很有效。最好使用逻辑创建基类,并从该类派生视图。通常情况下,您不应该显示/共享任何可在视图之间重用的方法。最好使用逻辑创建基类,并从该类派生视图。通常情况下,您不应该显示/共享任何可在视图之间重用的方法。我认为您需要了解HTML帮助程序以及如何创建自定义帮助程序:
我认为您需要了解HTML帮助程序以及如何创建自定义帮助程序: 试试这个 试试这个
你在使用区域吗?区域有自己的视图文件夹,通常有自己的web.config。如果是这种情况,您可以尝试将名称空间添加到该web.config 此外,web.config文件通过文件夹按层次进行解析。这意味着您的基本区域目录中可以有web.config,它会影响所有特定于区域的视图
在我的例子中,我有两个web.config文件,我在其中添加了我的名称空间-一个在视图目录中,另一个在区域目录中。你在使用区域吗?区域有自己的视图文件夹,通常有自己的web.config。如果是这种情况,您可以尝试将名称空间添加到该web.config 此外,web.config文件通过文件夹按层次进行解析。这意味着您的基本区域目录中可以有web.config,它会影响所有特定于区域的视图
在我的例子中,我有两个web.config文件,我在其中添加了我的名称空间-一个在视图目录中,另一个在区域目录中。目的是在同一个视图中重用,而不是在其他视图中共享。为什么需要将此功能仅隔离到一个视图中?是否存在未提及的安全问题?我正在创建一个实用程序类/方法以便于编码。目的是在同一视图中重用,而不是在其他视图中共享。为什么此功能需要仅隔离到一个视图?是否存在未解决的安全问题?我正在创建一个实用程序类/方法以方便编码。请尝试在视图的第一行添加此选项:“@using MyHtmlHelpers”尝试在视图的第一行添加此选项:“@using MyHtmlHelpers”我没有使用区域。但我可以在查看页面的顶部添加使用语句。我不使用区域。但我可以在查看页面顶部添加语句。