MVC 4'ü KnockoutJS ile kullanma. Özel bir nakavt onaylama ile göze batmayan doğrulama bağlayabilir miyim? Şu anda, afterRender
ile bir şablon kullanarak doğrulama işlemini yeniden yapıyorum. Otomatik olarak eklemeyle eklenmiş olmayı çok isterim. Bunun gibi:Özel KnockoutJS bağlamasıyla benzersiz onaylama işlemini bağlama
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);
}
};
Bütün gün bununla uğraştım. Son derece verimsiz olarak yapamam.
Şu anda yaptığım gibi, aşağıda. Belki de bundan mutlu olmalıyım. Ama sanırım insanlar bunu daha önce denediler.
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);
}
});
}
});
}
Bunu düşünmek zorundaydım, belki de buna nasıl yaklaştığımı anlayabiliyorum. – kamranicus
Tamam, hiçbir zaman hiçbir özel doğrulama bağlaması oluşturmak zorunda kalmamıştım, MVC'nin onaylama nitelikleri çıktıları için özniteliklerini kullandık ve aynı zamanda AJAX çağrıları yaparken 'parseDynamicContent' yardımcı yöntemini kullandık. jquery.unobtrusive.js dosyasını inceleyin ve eminim ki kuralları dinamik olarak eklemek için arayabileceğiniz bir yöntem var. – kamranicus