例如,当客户端选择的用户名已被另一个使用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。基本上,我在问这是否还好,是否有更好的方法。
答案 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")