在几个网页中使用Razor @functions(.cshtml文件)

时间:2013-07-11 20:07:28

标签: asp.net razor asp.net-webpages

我有以下功能,我想在我的asp.net网页2应用程序中使用几个.cshtml视图。如何使该功能可用于应用程序中的任何视图(而不仅仅是一个)。

@functions {

    public bool DisplayButton(String startDate, String endDate)
    {
        return Convert.ToDateTime(startDate) < DateTime.Now && Convert.ToDateTime(endDate) > DateTime.Now;
    }
}

3 个答案:

答案 0 :(得分:23)

在App_Code中创建一个名为Functions.cshtml的文件,然后将您拥有的代码粘贴到文件中。然后,您可以在任何.cshtml文件中调用DisplayButton方法,方法是在文件名前加上:

var myBool = Functions.DisplayButton(DateTime.Now, DateTime.Now.AddDays(30));

有关在ASP.NET网页中使用函数和帮助程序的更多信息,请阅读:http://www.mikesdotnetting.com/Article/173/The-Difference-Between-@Helpers-and-@Functions-In-WebMatrix

答案 1 :(得分:2)

您可以在AppCode目录的Razor文件中定义“全局”辅助函数,如下所述:http://weblogs.asp.net/scottgu/archive/2011/05/12/asp-net-mvc-3-and-the-helper-syntax-within-razor.aspx。但是,助手只渲染页面元素;它们不能返回值(或者更准确地说,返回的值是要呈现的HTML标记)。

如果您需要返回一个值,最好的选择是扩展方法。

答案 2 :(得分:1)

不明白为什么你没有静态方法的静态类,只是将它包含在每个视图的顶部,然后使用它