Как создать функцию в шаблоне cshtml? - PullRequest
201 голосов
/ 30 июня 2011

Мне нужно создать функцию, которая необходима только внутри одного файла cshtml. Вы можете думать о моей ситуации как о методах страницы ASP.NET, которые являются минимальными веб-сервисами, реализованными на странице, поскольку они ограничены одной страницей. Я знаю о HTML-помощниках (методах расширения), но моя функция просто необходима в одном файле cshtml. Я не знаю, как создать подпись функции внутри представления. Примечание : я использую шаблонизатор Razor.

Ответы [ 5 ]

381 голосов
/ 30 июня 2011

почему бы просто не объявить эту функцию внутри файла cshtml?

@functions{
    public string GetSomeString(){
        return string.Empty;
    }
}

<h2>index</h2>
@GetSomeString()
267 голосов
/ 30 июня 2011

Вы можете использовать директиву @helper Razor:

@helper WelcomeMessage(string username)
{
    <p>Welcome, @username.</p>
}

Тогда вы вызываете это так:

@WelcomeMessage("John Smith")
23 голосов
/ 30 июня 2011

Если ваш метод не должен возвращать html и должен делать что-то еще, тогда вы можете использовать лямбду вместо вспомогательного метода в Razor

@{
    ViewBag.Title = "Index";
    Layout = "~/Views/Shared/_Layout.cshtml";

    Func<int,int,int> Sum = (a, b) => a + b;
}

<h2>Index</h2>

@Sum(3,4)
8 голосов
/ 30 июня 2011
0 голосов
/ 16 февраля 2019

Если вы хотите получить доступ к глобальным переменным вашей страницы, вы можете сделать это:

@{
    ViewData["Title"] = "Home Page";

    var LoadingButtons = Model.ToDictionary(person => person, person => false);

    string GetLoadingState (string person) => LoadingButtons[person] ? "is-loading" : string.Empty;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...