我正在寻找一种可以定义全局函数的方法,以便我可以跨多个视图共享实现。
我想知道我会把它放在哪里?我尝试了_viewStart.cshtml和/Share/_Layout.cshtml,但似乎无法正常工作。
我不想为HtmlHelper
类创建扩展。在我的情况下,扩展将无法正常工作。我讨厌在多个视图中继续复制相同的功能。
@functions {
public static string GetColumnHeader(string columnName, string columnHeader, ISupportGridViewModel model)
{
return string.Format("{0} {1}", columnHeader, model.Sort == columnName ? model.SortDir == "ASC" ? "▲" : "▼" : string.Empty);
}
}
对于那些评论我应该使用扩展名的人。这是我无法让它工作的例子。据我所知,Razor助手只不过是扩展方法,它不会起作用。
这是一个正在运作的例子
var grid = new WebGrid(this.Model.Data);
grid.Pager(WebGridPagerModes.Numeric);
@grid.GetHtml(tableStyle: "table grid",
columns: grid.Columns(
grid.Column(columnName: "Time", format: (item) => MethodDefinedInView(item.EndTime))
))
这是一个不起作用的例子......
var grid = new WebGrid(this.Model.Data);
grid.Pager(WebGridPagerModes.Numeric);
@grid.GetHtml(tableStyle: "table grid",
columns: grid.Columns(
grid.Column(columnName: "Time", format: (item) => Html.ExtensionMethod(item.EndTime))
))
答案 0 :(得分:2)
只需在Utilities类中创建一个静态方法即可。您可以通过在Views文件夹内的Web.config中添加对命名空间的引用,或者只是在每个cshtml文件的顶部,在视图中访问它。