jquery - asp.net mvc3如何实例化客户端验证?

标签 jquery asp.net-mvc-3 validation

这个问题与asp.net mvc3框架最密切相关。它最初是“如何使用 jQuery 和 asp.net mvc3 确保动态附加输入字段的主动验证?”然而,经过一些搜索、测试和咖啡后,我发现了这一点:

function reValidate(formId) {
 $("#" + formId).removeData("validator");
 $("#" + formId).removeData("unobtrusiveValidation");
 $.validator.unobtrusive.parse("#" + formId);
}

这工作得很好。然而,我更好奇该框架实际使用的机制。我有一个完全基于脚本生成的页面。 View 中唯一的东西是 <div> ,一个<script>标签加载我的库,另一个 <script>填充<div> 。渲染完全动态的页面后,验证是完美的。但是,如果在页面加载后使用与页面加载时使用的相同进程来包含一些新内容,则验证会中断。当然可以,只需调用 reValidate()

但是-

a) 页面加载后(或加载时)框架如何实例化验证?

b) 框架的哪一部分处理它?是 mvc3 部分、asp.net 部分、razor 引擎还是其他部分?

最佳答案

a) How does the framework instantiate the validation once the page has loaded (or as it loads)?

它解析 DOM,查找 data-*输入字段上的属性并添加 jquery.validate rules 。 jQuery validate 是一个客户端验证插件,与 ASP.NET MVC 无关,可以与任何服务器端框架甚至纯静态 HTML 一起使用。

b) Which part of the framework handles it? Is it the mvc3 part, the asp.net part, the razor engine, or another part?

这是 jquery.validate.unobtrusive.js脚本。 ASP.NET MVC 帮助程序,例如 Html.TextBoxFor只需使用模型元数据生成具有正确 data-* 的输入字段基于您用于模型的数据注释的属性。这些属性包含生成 native jquery 验证规则所需的所有信息。因此,不显眼的脚本将 ASP.NET MVC 模型元数据和 jquery.validate 粘合在一起。插入。这是$.validator.unobtrusive.parse完成这项工作的函数。这就是为什么您在动态修改 DOM 时需要手动调用它的原因 - 您正在添加/删除 data-*需要转换为 jquery 验证规则的属性。不要犹豫,看看它内部是如何实现的 jquery.validate.unobtrusive.js .

关于jquery - asp.net mvc3如何实例化客户端验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11002627/

相关文章:

jquery - 如何不在 html 内容中预加载图像

jquery - 在同一页面中加载链接 jQuery

javascript - 使用 JavaScript 更改光标

asp.net-mvc-3 - 在 ASP.NET MVC 3 中应用数据注释时,你打算如何使用提示、描述、排序

php - 防止垃圾邮件发送者在网站上发布不受登录 ID 保护的表单

validation - 如何仅在成功提交表单后显示对话框

javascript - 如何选择范围之间的元素?

javascript - 带有 json 的 jquery 子网格

asp.net - ASP.NET MVC 3 中每用户缓存的 "Safe handle has been closed"

java - Jaxb 2.0 模式验证问题