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

Asp.net core 将数据发送回Razor模型页面的正确方法,asp.net-core,razor,Asp.net Core,Razor,例如,当一个客户端选择的用户名已经被另一个使用Razor模型页面的用户使用时,我试图将错误消息传递回页面 我目前正在使用来自cs的ViewData[…]将消息转发到Razor cshtml页面 [BindProperty] 公共用户视图用户视图{get;set;} 公共异步任务OnPostAsync() { 如果(!ModelState.IsValid) { 返回页(); } if(_context.User.Where(User=>User.Username==UserView.Usernam

例如,当一个客户端选择的用户名已经被另一个使用Razor模型页面的用户使用时,我试图将错误消息传递回页面

我目前正在使用来自cs的ViewData[…]将消息转发到Razor cshtml页面

[BindProperty]
公共用户视图用户视图{get;set;}
公共异步任务OnPostAsync()
{
如果(!ModelState.IsValid)
{
返回页();
}
if(_context.User.Where(User=>User.Username==UserView.Username).FirstOrDefault()!=null)
{
ViewData[“Error”]=“该用户名已被其他用户使用!”;
返回页();
}
}
CSHTML:

@if(ViewData[“Error”]!=null)
{
$(文档).ready(函数(){
游泳({
标题:“错误!”,
文本:“@ViewData[“Error”]”,
图标:“错误”,
});
});
}

这很好,但我找不到很多使用razor页面的资源,我找到的大部分都是使用aspnet core MVC。基本上,我是问这是否合适,是否有更好的方法。

您可以使用ModelState 例如

并考虑使用

@Html.ValidationMessage("DuplicateUser")

是否有更通用的方法访问模型错误?比如说我想触发其他错误的弹出窗口,而不是表单验证错误?比如@if(HasModelError())警报(@ModelError());尝试使用ajax调用处理程序
@Html.ValidationMessage("DuplicateUser")