С одной стороны, вы сообщаете компилятору, что она должна создать обработчик событий для события click с именем CreatePlayer: @onclick="CreatePlayer
. Эта директива компилятора атрибутов создает закулисный обработчик для вас EventCallback<Task>
, следствием чего является то, что вам вообще не нужно использовать StateHasChanged в вашем коде, поскольку этот метод (StateHasChanged) автоматически вызывается после того, как события пользовательского интерфейса принимают place.
С другой стороны, вы сообщаете компилятору, что тип кнопки должен быть установлен на «submit». Это неправильно, конечно ... Вы не можете иметь это и то и другое. Если для атрибута type задано значение «submit», обычно отправляют данные формы на сервер, но в Blazor такая функция запрещена с помощью кода в разделе JavaScript Blazor. Вы хотите отправить данные формы на сервер? Всегда помните, что Blazor это SPA-приложение. Не отправлять?
Ваш код должен быть:
<button @onclick="CreatePlayer" >Create User</button>
Просто для записей, обычно вы должны внедрить объект AuthenticationStateProvider
в ваши компоненты, например:
@inject AuthenticationStateProvider AuthenticationStateProvider
, а затем получить объект AuthenticationState. Вот как ваш код может быть переписан:
var authState = await AuthenticationStateProvider.GetAuthenticationStateAsync();
var user = authState.User;