我已经设置 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>
我已经使用推荐的代码连接了动态数据的验证堆栈溢出 https://stackoverflow.com/questions/4406291/jquery-validate-unobtrusive-not-working-with-dynamic-injected-elements.
当我回发到服务器时(我不使用 JSON 只是表单发布),我可以进行更复杂的验证,如果出现问题,我可以使用 ModelState.AddModelError("input field name", "I pity the folie that Break this" );对于非动态字段,这与强类型或 @Html.ValidationMessage("input field name") 完美配合
但是,我找不到将服务器端模型错误挂钩到动态内容的方法。
我有与客户端配合使用的跨度标签,它们工作得很好。但是,它们不会与服务器端验证失败并返回页面后返回的数据挂钩。知道如何实现这一目标吗?
Thanks