Подтвердить что ты не робот

Использование Razor @functions в нескольких веб-страницах (файлы .cshtml)

У меня есть следующая функция, которую я хотел бы иметь доступ к нескольким .cshtml-представлениям в приложении asp.net web pages 2. Как я могу сделать эту функцию доступной для любого вида в приложении (в отличие от одного).

@functions {

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

Ответ 1

Создайте файл с именем Functions.cshtml в App_Code, а затем вставьте код, который у вас есть в файл. Затем вы можете вызвать метод DisplayButton в любом файле .cshtml, предварительно указав его именем файла:

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

Подробнее о работе с функциями и помощниками в веб-страницах ASP.NET читайте следующее: http://www.mikesdotnetting.com/Article/173/[email protected]@Functions-In-WebMatrix

Ответ 2

Вы можете определить "глобальные" вспомогательные функции в файле Razor в каталоге AppCode, как описано здесь: http://weblogs.asp.net/scottgu/archive/2011/05/12/asp-net-mvc-3-and-the-helper-syntax-within-razor.aspx. Однако помощники только отображают элементы страницы; они не могут вернуть значение (или, вернее, возвращаемое значение - это разметка HTML).

Если вам нужно вернуть значение, лучшим вариантом будет метод расширения.

Ответ 3

Не понимаю, почему у вас не может быть статический класс со статическим методом и просто укажите его в верхней части каждого представления, а затем используйте его