Содержание
Иногда может потребоваться запретить выполнение действий по умолчанию каким-либо html-элементам или переопределить действие по умолчанию. В Blazor мы можем это сделать, используя специальный атрибут компонента.
@on[event]:preventDefault
Атрибут используется для событий DOM и запрещает действия по умолчанию и может использоваться в двух формах:
- полная форма (на примере события
onclick
):@onclick:preventDefault="true"
- сокращенная форма:
@onclick:preventDefault
Например, элемент <a> (ссылка) при срабатывании события onclick
перенаправляет пользователя по адресу, указанному в атрибуте href
. Запретить выполнение этого действия можно так:
<a href="http://yandex.ru" @onclick:preventDefault="true">Переход по ссылке</a>
Теперь мы можем переопределить действие по умолчанию. Например, создадим новое приложение Blazor Hybrid и изменим компонент Home.razor следующим образом:
@page "/" @if (showAlert) { <div class="alert alert-danger" role="alert"> Hello, world! </div> } <a href="http://yandex.ru" @onclick:preventDefault="true" @onclick="Click">Переход по ссылке</a> @code{ private bool showAlert = false; private void Click() { showAlert = true; } }
здесь мы запретили действие по умолчанию и назначили обработчик события onclick
для ссылки:
<a href="http://yandex.ru" @onclick:preventDefault="true" @onclick="Click">Переход по ссылке</a>
Теперь вместо перехода по ссылке мы получим сообщение:
Если не запретить действие по умолчанию, а просто назначить обработчик события вот так:
<a href="http://yandex.ru" @onclick="Click">Переход по ссылке</a>
то клик по ссылке приведет к тому, что вначале мы перейдем по ссылке (откроется браузер по умолчанию) и только потом сработает обработчик события onclick
.
Итого
Атрибут @on[event]:preventDefault
позволяет запретить выполнение действий по умолчанию в html-элементах, а использование пары @on[event]:preventDefault
и @on[event]
позволяет полностью изменить поведение элемента при вызове какого-либо события.