如果未在每个视图上加载非侵入式库,则客户端验证不起作用

Client-Side validations don't work if unobtrusive library is not loaded on every view

提问人:Luis Gouveia 提问时间:5/11/2016 更新时间:5/11/2016 访问量:340

问:

在我的 ASP.Net MVC Web 应用程序上,我在 _Layout.cshtml 文件上加载以下脚本:

@Scripts.Render("~/Scripts/modernizr-2.6.2.js")
@Scripts.Render("~/Scripts/jquery-2.2.3.js")
@Scripts.Render("~/Scripts/bootstrap.js")
@Scripts.Render("~/Scripts/respond.js")
@Scripts.Render("~/Scripts/toastr.js")
@Scripts.Render("~/Scripts/jquery-ui-1.11.4.js")
@Scripts.Render("~/Scripts/easyResponsiveTabs.js")
@Scripts.Render("~/Scripts/jquery.validate.js")
@Scripts.Render("~/Scripts/jquery.unobtrusive-ajax.js")
@Scripts.Render("~/Scripts/jquery.validate.unobtrusive.js")

在我的第一篇文章之前,一切看起来都很好,那时事情变得一团糟。当我发布(通过ajax)带有客户端验证的表单(例如:标记为必需的空文本框)时,我没有看到任何验证错误,并且表单被提交到服务器,上面有错误。

但是,如果我再次调用最后一个脚本:在每个带有表单的视图上,一切都像魅力一样工作。@Scripts.Render("~/Scripts/jquery.validate.unobtrusive.js")

你知道可能会发生什么吗?我相信我不应该被迫将脚本再次包含在每个部分视图上,并带有我想发布的表单......

javascript jquery asp.net-mvc unobtrusive-javascript

评论

1赞 5/11/2016
视图中是否有其他脚本,例如,该脚本的另一个副本可能是“擦除”布局中的脚本jquery-{version}.js
0赞 Luis Gouveia 5/11/2016
@StephenMuecke,不,一点也不。
1赞 5/11/2016
您通常如何发布 - 通过处理表单事件,或者只是按钮事件(在这种情况下您调用)?。这些表单中是否有任何一个是使用 ajax 动态加载到页面中的(在这种情况下,您正在重新解析验证器)?.submit().click()$('form'.valid();
0赞 Luis Gouveia 5/11/2016
就是这样@StephenMuecke!$.validator.unobtrusive.parse(文档);

答: 暂无答案