提问人:Don 提问时间:1/5/2022 最后编辑:NimanthaDon 更新时间:1/5/2022 访问量:572
为什么 ASP.NET 核心 3.1 [远程] 验证不起作用?
Why is ASP.NET core 3.1 [Remote] validation not working?
问:
我正在使用 ASP.NET Core 3.1 编写代码,我想在我的模型上添加 [Remote] 属性。我查看了官方文档页面并编写了如下代码:
我的控制器“ClientController”中的代码:
[AcceptVerbs("GET", "POST")]
public IActionResult IsNameAvailable(string name) {
return Json(false);
}
在我的模型中编写代码:
[Required(ErrorMessage = "Name is required")]
[StringLength(80, MinimumLength = 3, ErrorMessage = "Name length must be between 3 to 80 characters.")]
[Remote(action: "IsNameAvailable", controller: "Client", ErrorMessage = "It's working.")]
public string Name { get; set; }
但它不起作用。确切地说,该动作似乎根本没有被触发。我尝试添加一些断点或在里面抛出错误,什么都没有。IsNameAvailable
我搜索了一些关于远程验证的信息,我真的很困惑,因为每个人都在做不同的事情,没有什么对我有用:
- 我尝试在我的视图/布局页面上添加jQuery脚本,但没有任何反应。另外,有必要吗?
- 我安装了jQuery.Validation NuGet包。
- 就在操作之前,我将 更改为 .我还添加了其他一些东西,但没有运气。
IsNameAvailable
[AcceptVerbs("Get", "Post")]
[HttpPost]
[ValidateAntiForgeryToken]
- 我将操作从 更改为 或 .(不知道这一切意味着什么。
IActionResult IsNameAvailable
async Task<IActionResult>
JsonResult
- 我非常绝望,我什至尝试了代替,但当然事实并非如此。
controller: "ClientController"
controller: "Client"
我错过了什么?
答:
0赞
G. Belkin
1/5/2022
#1
您的控制器有属性吗?默认情况下,此属性启用验证。[ApiController]
否则,您可以直接检查您的。ModelState
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
如果这没有帮助,您需要向我们展示 contoller 的代码,以便我们有更多的上下文可供处理。
源:
- https://learn.microsoft.com/en-us/aspnet/core/web-api/?view=aspnetcore-6.0#automatic-http-400-responses
- https://learn.microsoft.com/en-us/aspnet/core/web-api/?view=aspnetcore-6.0#apicontroller-attribute
评论
0赞
Don
1/5/2022
不,它没有 [ApiController] 属性,在我搜索的教程/帖子中没有人提到它进行远程验证。我添加了它,但现在我遇到了错误,目前正在处理它们。
下一个:远程验证不适用于部分视图
评论