Как определить метод в 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>