为啥 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") <script src="~/js/myScriptWhereIWantToUseValidator.js"></script>
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 函数