Как создать функцию в шаблоне cshtml?

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

Ответ 1

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

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

Затем вы вызываете его следующим образом:

@WelcomeMessage("John Smith")

Ответ 2

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

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

<h2>index</h2>
@GetSomeString()

Ответ 3

Если ваш метод не должен возвращать 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)