为啥 jQuery 验证函数在 ASP.NET MVC Core 应用程序中不起作用?

Posted

技术标签:

【中文标题】为啥 jQuery 验证函数在 ASP.NET MVC Core 应用程序中不起作用?【英文标题】:Why jQuery validation funcs are not working in ASP.NET MVC Core app?为什么 jQuery 验证函数在 ASP.NET MVC Core 应用程序中不起作用? 【发布时间】:2020-06-30 22:47:18 【问题描述】:

我有 ASP.NET Core MVC 应用程序,我想使用 jQuery 客户端验证。 我在 _Layout.cshtml 中导入脚本,并在源文件中看到它们:

 <script src="~/lib/jquery/dist/jquery.js"></script>
 <script src="~/lib/jquery-validation/dist/jquery.validate.js"></script>
 <script src="~/lib/jquery-validation/dist/additional-methods.js"></script>
 <script src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js"></script>

当我使用带有 MVC 表单(asp-action 和 asp-controller)的简单提交按钮时,不显眼的验证效果很好。出现错误,没关系。但是当我使用 Ajax 向控制器提交表单并且我想调用 jQuery 验证函数时会出现问题 .validate()、$.validator.unobtrusive.parse('form')

然后在控制台中出现如下错误:

$(...).validate 不是函数 $.validator 未定义

我尝试将脚本放在视图中,直接放在我使用它们的脚本之前。我也将我的脚本放在 _Layout.cshtml 中,但它没有帮助。

【问题讨论】:

尝试参考this thread中提供的相关主题的回复,这可能会有所帮助。 【参考方案1】:

试试这个:

$(document).ready(function () 
    $("form").each(function ()  $.data($(this)[0], 'validator', false); );
    $.validator.unobtrusive.parse("form");
);

【讨论】:

它仍然返回 $.validator is undefined 。我发现我们可以通过 PartialView 加载脚本。在 ASP.NET Core MVC 应用程序中有默认验证 Parial _ValidationScriptPartial 但没有帮助。 @section Scripts @await Html.PartialAsync("~/Views/Shared/_ValidationScriptsPartial.cshtml") &lt;script src="~/js/myScriptWhereIWantToUseValidator.js"&gt;&lt;/script&gt; link _Layout.cshtml link View.cshtml link _FormPartialView.cshtml 而在 tyresItems.js 中我想使用验证方法,即 $('#addTyreItem-form').validate() 但它不起作用。 可能是因为打开模式并在 DOM 底部呈现它们,毕竟

以上是关于为啥 jQuery 验证函数在 ASP.NET MVC Core 应用程序中不起作用?的主要内容,如果未能解决你的问题,请参考以下文章

从 asp.net 的验证器获取关于状态更改的事件到 jquery

在 PostBack (ASP.NET) 上运行 jQuery 函数

在 asp.net 中的 Jquery 验证 BIC IBAN

启用使用 jquery 禁用 asp.net 验证控件

为啥 ASP.NET Core 密码验证规则不起作用?

什么是在 asp.net 中返回验证器状态的内置 javascript 函数