为什么 ASP.NET 核心 3.1 [远程] 验证不起作用?

Why is ASP.NET core 3.1 [Remote] validation not working?

提问人:Don 提问时间:1/5/2022 最后编辑:NimanthaDon 更新时间:1/5/2022 访问量:572

问:

我正在使用 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

我搜索了一些关于远程验证的信息,我真的很困惑,因为每个人都在做不同的事情,没有什么对我有用:

  1. 我尝试在我的视图/布局页面上添加jQuery脚本,但没有任何反应。另外,有必要吗?
  2. 我安装了jQuery.Validation NuGet包。
  3. 就在操作之前,我将 更改为 .我还添加了其他一些东西,但没有运气。IsNameAvailable[AcceptVerbs("Get", "Post")][HttpPost][ValidateAntiForgeryToken]
  4. 我将操作从 更改为 或 .(不知道这一切意味着什么。IActionResult IsNameAvailableasync Task<IActionResult>JsonResult
  5. 我非常绝望,我什至尝试了代替,但当然事实并非如此。controller: "ClientController"controller: "Client"

我错过了什么?

C# ASP.net-core-3.1 远程验证

评论

0赞 pquest 1/5/2022
你想在哪里称呼它?你能展示你的javascript代码吗?
0赞 Don 1/5/2022
@pquest我没有为此对js代码进行更改。我必须这样做吗?我没有找到任何东西,你能告诉我我必须做什么吗?
0赞 pquest 1/5/2022
我从未使用过这个,但是阅读您链接的文档,此远程功能似乎与Jquery远程验证功能有关。jqueryvalidation.org/remote-method

答:

0赞 G. Belkin 1/5/2022 #1

您的控制器有属性吗?默认情况下,此属性启用验证。[ApiController]

否则,您可以直接检查您的。ModelState

if (!ModelState.IsValid)
{
    return BadRequest(ModelState);
}

如果这没有帮助,您需要向我们展示 contoller 的代码,以便我们有更多的上下文可供处理。

源:

评论

0赞 Don 1/5/2022
不,它没有 [ApiController] 属性,在我搜索的教程/帖子中没有人提到它进行远程验证。我添加了它,但现在我遇到了错误,目前正在处理它们。