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

时间:2019-06-21 04:31:57

标签: asp.net-core razor

例如,当客户端选择的用户名已被另一个使用Razor模型页面的用户使用时,我正在尝试将错误消息转发回该页面。

我目前正在使用cs中的ViewData [...]将消息中继到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。基本上,我在问这是否还好,是否有更好的方法。

1 个答案:

答案 0 :(得分:1)

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