使用MVC 4与KnockoutJS。我可以将不显眼的验证与自定义敲除绑定绑定吗?我目前正在使用afterRender
的模板重新验证验证。我很想让它自动添加绑定。像这样:使用定制的KnockoutJS绑定绑定不显眼的验证
ko.bindingHandlers.egtZipRep = {
init: function (element, valueAccessor, allBindingsAccessor, context) {
$(element).inputmask("99999", { "placeholder": " " });
egtUniqueNameBinding(element, ++ko.bindingHandlers['uniqueName'].currentIndex);
applyValidationRules(element); // Is it possible to do this here?
ko.bindingHandlers.value.init(element, valueAccessor, allBindingsAccessor, context);
}
};
我整天都在做这些事。如果不是非常低效,我无法做到这一点。
我现在这样做的方式如下。也许我应该对它感到满意。但我猜测人们之前曾尝试过这一点。
self.ReferenceAfterRender = function (element) {
bindUnobtrusiveValidation(element);
}
// Bind validation on new content
function bindUnobtrusiveValidation(element) {
// Bind to fields - must be called everytime new field is created
$.validator.unobtrusive.parseDynamicContent(element);
}
$.validator.unobtrusive.parseDynamicContent = function (selector) {
// Use the normal unobstrusive.parse method
$.validator.unobtrusive.parse(selector);
// Get the relevant form
var form = $(selector).first().closest('form');
// Get the collections of unobstrusive validators, and jquery validators
// and compare the two
var unobtrusiveValidation = form.data('unobtrusiveValidation');
var validator = form.validate();
if (typeof (unobtrusiveValidation) != "undefined") {
$.each(unobtrusiveValidation.options.rules, function (elname, elrules) {
if (validator.settings.rules[elname] === undefined) {
var args = {};
$.extend(args, elrules);
args.messages = unobtrusiveValidation.options.messages[elname];
$('[name=' + elname + ']').rules("add", args);
} else {
$.each(elrules, function (rulename, data) {
if (validator.settings.rules[elname][rulename] === undefined) {
var args = {};
args[rulename] = data;
args.messages = unobtrusiveValidation.options.messages[elname][rulename];
$('[name=' + elname + ']').rules("add", args);
}
});
}
});
}
我不得不处理这个问题,我想,也许我可以挖掘我是如何接近这个的。 – kamranicus 2013-03-29 17:48:37
好吧,我从来不需要创建任何自定义验证绑定,我们使用MVC的属性来输出验证属性,并且在进行AJAX调用时也使用'parseDynamicContent'辅助方法。 通过jquery.unobtrusive.js查看,我确定有一种方法可以调用来动态添加规则。 – kamranicus 2013-03-29 18:05:05