[英]How does asp.net mvc3 instantiate client side validation?
这个问题与asp.net mvc3框架最为密切相关。 它最初是“如何使用带有asp.net mvc3的jQuery确保动态附加输入字段的活动验证?” 然而,经过一些搜索,测试和咖啡,我发现了这个:
function reValidate(formId) {
$("#" + formId).removeData("validator");
$("#" + formId).removeData("unobtrusiveValidation");
$.validator.unobtrusive.parse("#" + formId);
}
这很好用。 但是,我对框架实际使用的机制更加好奇。 我有一个完全基于脚本生成的页面。 视图中唯一的东西是<div>
,一个<script>
标记来加载我的库,另一个<script>
来填充<div>
。 渲染完全动态的页面后,验证完美无瑕。 但是,如果在加载页面后使用页面加载时使用的相同进程包含一些新内容,则验证会中断。 当然,只需调用reValidate()
。
但是 -
a)一旦页面加载(或加载),框架如何实例化验证?
b)框架的哪个部分处理它? 它是mvc3部分,asp.net部分,剃刀引擎还是其他部分?
a)一旦页面加载(或加载),框架如何实例化验证?
它解析DOM,在输入字段中查找data-*
属性并添加jquery.validate规则 。 jQuery validate是一个客户端验证插件,它与ASP.NET MVC无关,可以与任何服务器端框架一起使用,甚至可以与纯静态HTML一起使用。
b)框架的哪个部分处理它? 它是mvc3部分,asp.net部分,剃刀引擎还是其他部分?
这是jquery.validate.unobtrusive.js
脚本。 ASP.NET MVC帮助程序(如Html.TextBoxFor
只是使用模型元data-*
根据您用于模型的数据注释生成具有正确data-*
属性的输入字段。 这些属性包含所有必要信息,以便生成本机jquery验证规则。 因此,不引人注目的脚本在ASP.NET MVC模型元数据和jquery.validate
插件之间形成了jquery.validate
。 这是完成这项工作的$.validator.unobtrusive.parse
函数。 这就是为什么在动态修改DOM时需要手动调用它的原因 - 您正在添加/删除需要转换为jquery验证规则的data-*
属性。 不要犹豫,看看它是如何在jquery.validate.unobtrusive.js
实现的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.