У меня есть типичный элемент div на странице cshtml в форме:
<div id="loginErrors" class="alert alert-danger hide-errors">@(ErrorMessage)</div>
pre Blazor, я бы обычно использовал jQuery для добавления или удаления класса hide-errors
из div. Тем не менее, Blazor пытается устранить необходимость в JavaScript, и я стараюсь использовать как можно меньше JSInterop. Есть ли способ в Blazor сделать это?
так что в Блазоре я мог сделать:
@if (!string.IsNullOrEmpty(ErrorMessage))
{
<div id="loginErrors" class="alert alert-danger">@(ErrorMessage)</div>
}
else
{
<div id="loginErrors" class="alert alert-danger hide-errors">@(ErrorMessage)</div>
}
или используя JSinterop:
Звонок на удаление:
await JSRuntime.Current.InvokeAsync<object>("blazorExtensions.RemoveClass", "loginErrors", "hide-errors");
где функция, как правило, будет:
RemoveClass: function (id, classname) {
var tt = '#' + id;
$(tt).removeClass(classname);
}
с аналогами для добавления класса. Обе вышеперечисленные работы, но, как уже упоминалось. Я пытаюсь избежать маршрута JSInterop, и мне не нравится, когда элемент div объявляется дважды, хотя в DOM попадет только один.