mam Knockoutjs konfiguracji dynamicznie utworzyć edytowalną listę wartości, stosując następujący kod:Jak uzyskać błąd ModelState.AddModel wiązania do nokautu dynamicznie utworzone zakresy sprawdzania poprawności?
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);
Z 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>
mam podłączony walidacji dla dynamicznych danych przy użyciu kodu zalecana na stackoverflow .
Kiedy wysyłam z powrotem na serwer (nie używam JSON-a do wysłania formularza) mogę wykonać bardziej złożoną weryfikację i jeśli coś się nie powiedzie, mogę użyć ModelState.AddModelError ("nazwa pola wejściowego", "szkoda mi głupca który to złamał "); Działa to doskonale albo z silnym typem, albo z atrybutem @ Html.ValidationMessage ("nazwa pola wejściowego") dla niedynamicznych pól.
Jednak nie mogę znaleźć sposobu na zwrócenie błędu modelu strony po stronie serwera dla zawartości dynamicznej.
Mam tagi span, które działają po stronie klienta i działają idealnie. Jednak nie są one uzależnione od danych zwracanych po niepowodzeniu sprawdzania poprawności serwera i zwróceniu strony. Masz pomysł, jak to osiągnąć?
Dzięki
Preferowanym podejściem jest zbudowanie niestandardowego elementu ModelBinder w celu powiązania przychodzących wartości z modelem i zezwolenie na uruchomienie domyślnego mechanizmu sprawdzania poprawności. Masz na myśli, że twoje modele są generowane po stronie klienta, a ty nie masz go zdefiniowanego na serwerze? – Aliostad
Model jest zdefiniowany po stronie serwera. Sekcja strony używa knockoutjs do dodawania elementów do listy. Wszystko dostaję doskonale pocztą. Wszystkie dane dynamiczne są publikowane. Problem polega na tym, że jeśli podniosę stronę serwera błędów (na przykład złożoną weryfikację), a następnie powrócę do widoku, wszelkie błędy wywołane w stosunku do elementów tworzonych dynamicznie nie są powiązane. – GraemeMiller
Myślę, że prawdopodobnie będę musiał uzyskać dostęp do stanu modelu i dodać odpowiednie błędy do modelu Knockout, a następnie użyć tego. Zastanawiałam się, czy istnieje bardziej elegancki sposób (jak na przykład sprawdzanie poprawności strony klienta). – GraemeMiller