无法在jquery ajaxpost上使用mvc 3进行不显眼的validation
我在使用MVC3进行validation方面遇到了很多麻烦。 我直接加载页面时工作正常,但是当我使用jquery AJAX POST时它不会validation:
这个表单使用$('#modal-dialog').load('/DartsMVC/Restaurant/Edit/13')
,这是呈现的HTML:
拦截表单/提交使用AJAX POST。 post完成后,模式对话框会自动弹出并关闭。 我想在发送post之前validation表单:
// force change the submit data to an ajax POST (usually 'save', 'delete' button) $('#modal-dialog').delegate('form', 'submit', function (e) { e.preventDefault(); var form = $(this); form.validate(); // does nothing if (form.valid()) { $.ajax({ url: form.attr('action'), type: "POST", data: form.serialize(), success: function (data) { $('#modal-dialog').dialog('close'); }, error: function (jqXhr, textStatus, errorThrown) { alert("Error '" + jqXhr.status + "' (textStatus: '" + textStatus + "', errorThrown: '" + errorThrown + "')"); } }); } });
我这样做了吗? .valid()
始终返回true。
我的web.config有:
我的页面来源有:
我的模型有:
[Required] public string Name { get; set; }
经过更多的研究,我认为它可能与动态控件有关:
- 由于存在data-val属性,因此它不是表单范围问题
- 我会尝试调用$ .validator.unobtrusive.parse(’#formid’)。 如果这样做不起作用,我将使用这个最后的手段:
- http://xhalent.wordpress.com/2011/01/24/applying-unobtrusive-validation-to-dynamic-content/
解决了
调用$ .validator.unobtrusive.parse($(’form’))就可以了。 我想validation器需要为动态内容重新创建