Как я могу добавить сообщение после поста? - PullRequest
0 голосов
/ 25 января 2019

У меня есть форма аутентификации с функцией OnPostAsync(), и я хочу добавить сообщение об ошибке, когда аутентификация не удалась, но я не могу получить сообщение на своей странице.

Я использую и задаю переменную, когда получаю ответ от API, но передний код обновляться не будет.


Login.cshtml.cs

public string errorMessage { get; set; }

public async void OnPostAsync()
{
    if (!ModelState.IsValid)
    {
        return;
    }

    var resp = await _loginService.Connection(user);

    if (resp == null)
    {
        Console.WriteLine("resp null");
        errorMessage = "Incorrect username or password";
        return;
    }
    _cookieService.Set("token", resp);
}

Login.cshtml

<div class="classbody">
    <form class="form-signin" method="post">
        <h1 class="h3 mb-3 font-weight-normal">Connexion</h1>
        <label for="username" class="sr-only">Username</label>
        <input type="text" id="username" class="form-control" placeholder="Username" asp-for="user.Username" required autofocus>
        <label for="inputPassword" class="sr-only">Password</label>
        <input type="password" id="inputPassword" class="form-control" placeholder="Password" asp-for="user.Password" required>
        <button class="btn btn-lg btn-primary btn-block" type="submit">Connexion</button>
        <p class="mt-5 mb-3 text-muted">&copy; 2017-2018</p>
        @if (@Model.errorMessage != null)
        {
            <div class="alert alert-danger" role="alert">
                @Model.errorMessage
            </div>
        }
    </form>
</div>

errorMessage = "Incorrect username or password"; не работает после ожидания, если я поставлю строку в начале функции (OnPostAsync), она работает хорошо, но она мне нужна после ответа API.

Ответы [ 2 ]

0 голосов
/ 25 января 2019

WhoKnows решил это, теперь это мой код, и он работает как шарм.

public async Task<IActionResult> OnPostAsync()
        {
            if (!ModelState.IsValid)
            {
                return Page();
            }
            var resp = await _loginService.Connection(user);
            if (resp == null)
            {
                Console.WriteLine("resp null");
                errorMessage = "Error";
                return Page();
            }
            return RedirectToPage("/Book");
        }
0 голосов
/ 25 января 2019

Вы должны использовать Task вместо void.

...