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

22

我有以下函数,我希望它可以在我的asp.net web pages 2应用程序中的多个.cshtml视图中使用。如何使此函数可用于应用程序中的任何视图(而不仅仅是一个视图)。

@functions {

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

可能是重复的问题,https://dev59.com/9Ww15IYBdhLWcg3w3vle - Mattiavelli
2
我不打算使用帮助程序。 - Robert
3个回答

26

我有这个错误信息。 CS0120:非静态字段、方法或属性“Functions.AgoDateString()”需要对象引用。 - Georgi Kovachev
这个可以工作。正如链接的文章所说,Functions.cshtml 文件可以被命名为任何名称,但是声明的方法必须是 public static,并且通过引用文件名 @Functions.MyMethod() 来调用它们。如果方法不是 public static,则会收到类似于 Georgi 的错误。还要注意 MSVC 会自动生成所需的类。 - Anthony

2

3
函数关键字用于定义一个函数(方法),该函数返回由方法签名定义的值。帮助器关键字定义了一个Razor模板,用于呈现HTML。 - Mike Brind

1

我不明白为什么不能使用一个静态类和静态方法,然后在每个视图的顶部包含它,并使用它。


1
因为每次修改类都需要编译,所以您需要编译。 - MatteoSp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接