Как определить метод в Razor?

Как определить метод в Razor?

Ответ 1

Оставляя в одиночестве любые дебаты о том, когда (когда-либо) это должно быть сделано, @functions - это то, как вы это делаете.

@functions {

    // Add code here.

}

Ответ 2

Вы имеете в виду встроенного помощника?

@helper SayHello(string name)
{
    <div>Hello @name</div>
}

@SayHello("John")

Ответ 3

Очень просто определить функцию внутри бритвы.

@functions {

    public static HtmlString OrderedList(IEnumerable<string> items)
    { }
}

Таким образом, вы можете вызывать функцию в любом месте. Как

@Functions.OrderedList(new[] { "Blue", "Red", "Green" })

Однако эту же работу можно выполнить и с помощью helper. В качестве примера

@helper OrderedList(IEnumerable<string> items){
    <ol>
        @foreach(var item in items){
            <li>@item</li>
        }
    </ol>
}

Так в чем разница? Согласно предыдущему сообщению

Ответ 4

Вы также можете сделать это с помощью Func, подобного этому

@{
    var getStyle = new Func<int, int, string>((width, margin) => string.Format("width: {0}px; margin: {1}px;", width, margin));
}

<div style="@getStyle(50, 2)"></div>

Ответ 5

Бритва - всего лишь шаблонный двигатель.

Вы должны создать обычный класс.

Если вы хотите создать метод внутри страницы Razor, поместите их в блок @functions.

Ответ 6

Вы также можете просто использовать блок @{ } для создания функций:

@{
    async Task<string> MyAsyncString(string input)
    {
        return Task.FromResult(input);
    }
}

Затем в вашей странице бритвы:

   <div>@(await MyAsyncString("weee").ConfigureAwait(false))</div>

Ответ 7

Вы можете просто объявить их как локальные функции в блоке бритвы (т.е. @{}).

@{
    int Add(int x, int y)
    {
        return x + y;
    }
}

<div class="container">
    <p>
        @Add(2, 5)
    </p>
</div>