要解决“Asp.net MVC表单远程验证不执行异步API调用”的问题,可以按照以下步骤进行:
data-val-remote
属性,并在其中指定异步验证的 URL。
$.validator.unobtrusive.adapters.add("remote", ["url"], function (options) {
options.rules["remote"] = {
url: options.params.url,
type: "POST",
dataType: "json",
data: {
// 发送的数据
}
};
options.messages["remote"] = options.message;
});
$.validator.addMethod("remote", function (value, element, params) {
var response = $.ajax({
url: params.url,
type: "POST",
dataType: "json",
data: {
// 发送的数据
},
async: false
}).responseJSON;
return response.isValid;
});
[HttpPost]
public JsonResult RemoteValidation(string data)
{
// 执行验证逻辑
bool isValid = // 验证结果
return Json(new { isValid = isValid });
}
Global.asax.cs
文件中启用远程验证。protected void Application_Start()
{
// 其他代码...
// 启用远程验证
DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(RemoteAttribute), typeof(RemoteValidator));
}
通过以上步骤,当用户在前端输入表单字段的值时,会触发异步 API 的调用进行远程验证,并根据验证结果返回给用户。