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