Я настроил Knockoutjs для динамического создания редактируемого списка значений, используя следующий код:
var requirementModel = function() {
var self = this;
self.requirementtypes = ko.observableArray(@Html.Interpret(Model.requirementtypes));
self.requirementid = ko.observable(@Html.Interpret(Model.requirementid));
self.AddRequirementType = function() {
self.requirementtypes.push({
requirementtypeid: null,
number: "",
requirementid: 0
});
};
self.RemoveType = function(Type) {
self.requirementtypes.remove(Type);
};
self.hookUpValidation = function() {
$.validator.unobtrusive.parseDynamicContent('.dynamicData');
};
};
var viewModel = new requirementModel();
ko.applyBindings(viewModel);
С HTML:
<div class="small-box dynamicData" data-bind="template:{ name: 'requirementType-template', foreach: requirementtypes, afterRender:$root.hookUpValidation }" ></div>
<button data-bind='click: AddType'>Add Type</button>
Я подключил проверку для динамических данных, используя код, рекомендованный для stackoverflow .
Когда я отправляю сообщение обратно на сервер (я не использую JSON, просто отправляю форму), я могу сделать более сложную проверку, и если что-то не получается, я могу использовать ModelState.AddModelError («имя поля ввода», «Мне жаль дурака, что сломал это "); Это прекрасно работает либо с типом строго, либо с @ Html.ValidationMessage («имя входного поля») для не динамических полей
Однако я не могу найти способ привязать ошибку модели на стороне сервера к динамическому контенту.
У меня есть теги span, которые работают на стороне клиента и работают отлично. Однако они не попадают в данные, возвращаемые после сбоя проверки на стороне сервера и возврата страницы. Есть идеи, как этого добиться?
Спасибо