У меня есть настройки Knockoutjs динамически создать редактируемый список значений, используя следующий код:Как получить ModelState.AddModel Ошибка привязки к динамически созданным диапазонам проверки нокаута?
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, которые работают с клиентской стороной, и они отлично работают. Однако они не попадают в данные, возвращенные после проверки на стороне сервера, и возвращают страницу. Любая идея, как добиться этого?
Благодаря
Предпочтительный подход заключается в создании пользовательского ModelBinder для привязки входящих значений к вашей модели и возможности запуска механизма проверки по умолчанию. Вы имеете в виду, что ваши модели создаются на стороне клиента, и вы не указали их на сервере? – Aliostad
Модель определена на стороне сервера. В разделе страницы используется knockoutjs для добавления элементов в список. Я получаю все обратно через почту. Все динамические данные опубликованы. Проблема заключается в том, что я поднимаю серверную страницу с ошибкой (например, комплексную проверку), а затем возвращаюсь в представление, любые ошибки, возникающие в отношении динамически создаваемых элементов, не связаны. – GraemeMiller
Я думаю, что мне, вероятно, придется получить доступ к modelstate и добавить соответствующие ошибки к модели Knockout, а затем использовать это. Просто задавался вопросом, был ли более элегантный способ (например, как я получил подтверждение на стороне клиента). – GraemeMiller