将数据发送回 Razor 模型页面的正确方法



例如,当客户端选择的用户名已被使用 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>
}

这工作正常,但我找不到很多使用剃须刀片页面的资源,我发现的大部分资源都是使用 aspnet 核心 MVC。基本上,我问这是否很好,是否有更好的方法。

您可以使用 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")

最新更新