Оператор условного if Blazor для onclick
У меня есть диапазон, который должен иметь атрибут onclick, если IsActive bool истинно. В противном случае у диапазона не должно быть атрибута onclick.
например
@if (IsActive == true)
{
<span @onclick="@(e => Go.DoSomething("please"))">
@s.DisplayText
</span>
}
else
{
<span>
@s.DisplayText
</span>
}
Есть ли способ избежать повторения кода с помощью тернарного оператора? например
@(IsActive == true ? "add onclick method somehow?" : "")
Ответы
Вы можете сделать следующее.
<span @onclick="@(e => { if (IsActive) Go.DoSomething("please");})">
@s
</span>
Lambda Выражение это то , что я думаю , что вы действительно ищете.
Лучше всего добавить условие IsActive == trueв Go.DoSomethingметоде. Но в идеале я бы использовал кнопку, если ее можно щелкнуть, потому что мы можем добавить disabledатрибут к кнопке, в вашем случае вы можете добавить условие внутри onclickметода.
Просто подсказка для кнопки, вы можете просто добавить свое логическое свойство С # в этот атрибут следующим образом:
<button disabled="@IsActive">Save</button>
Просто хочу добавить что-то для людей, у которых есть похожая проблема:
Если у вас больше HTML-кода, чем в одном диапазоне, и он понадобится вам дважды из-за оператора if-else, я бы создал собственный компонент Blazor (например, MyComponent.razor) и использовал параметры компонента. Таким образом, у вас не будет большого количества повторяющегося кода в выражении if-else.