21

I have the below function that I would like to be available to several .cshtml views in my asp.net web pages 2 application. How can I make this function available to any view in the application (as opposed to just one).

@functions {

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

3 回答 3

25

在 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

于 2013-07-11T20:26:13.507 回答
2

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

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

于 2013-07-11T20:16:10.963 回答
1

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

于 2013-07-11T20:21:16.510 回答