Правильный способ отправки данных обратно на страницу модели Razor - PullRequest
0 голосов
/ 21 июня 2019

Я пытаюсь передать сообщение об ошибке обратно на страницу, когда, например, имя пользователя, которое выбирает клиент, уже используется другим пользователем, использующим страницы модели Razor.

В настоящее время я использую ViewData [...] из cs для передачи сообщения на страницу Razor cshtml.

[BindProperty]
        public UserView UserView { get; set; }

        public async Task<IActionResult> OnPostAsync()
        {
            if (!ModelState.IsValid)
            {
                return Page();
            }


            if(_context.User.Where(user => user.Username == UserView.Username).FirstOrDefault() != null)
            {
                ViewData["Error"] = "That username is already in use by another user!";
                return Page();
            }
       }

CSHTML:

@if (ViewData["Error"] != null)
{
    <script>
    $(document).ready(function () {
        swal({
            title: "Error!",
            text: '@ViewData["Error"]',
            icon: "error",
        });
    });
    </script>
}

Это отлично работает, но я не могу найти много ресурсов для использования бритвенных страниц, и большая часть того, что я нахожу, - это использование ядра MVC aspnet. По сути, я спрашиваю, хорошо ли это и может ли быть лучший способ.

1 Ответ

1 голос
/ 21 июня 2019

Вы можете использовать ModelState Например,

if(_context.User.Where(user => user.Username == UserView.Username).FirstOrDefault() != null)
{
      ModelState.AddModelError("DuplicateUser", "That username is already in use by another user!");

      return View();
}

А с учетом использования

@Html.ValidationMessage("DuplicateUser")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...