【发布时间】:2011-05-18 17:32:22
【问题描述】:
我已经搜索了很长时间,但无法找到答案。
我正在使用带有不显眼验证的 asp.net MVC 3。我的模型绑定了用于简单验证的数据注释(必填字段、正则表达式等)。但是,我在服务器上进行了更复杂的验证。我正在做一个 ajax 帖子,它返回来自我的域模型的验证添加消息。我要做的就是将这些验证消息放在表单上以代替现有的。我不想使用部分视图,因为我真正得到的只是返回的消息,并且不需要刷新整个视图。此外,我不会向表单添加新规则或新输入,因此 $.validator.unobtrusive.parse 将不起作用。这些只是我想放在表格上的信息。 $.post 调用返回一个消息列表,其中包含/受到影响的字段以及验证消息。
这就是我想要做的事情
$.post(url, { someData}, function (data) {
for (message in data.Messages) {
$("#form").validate().addMessage(message.Field, message.Text);
}
});
感谢您的帮助
根据请求,这里是返回 JSON 的示例,它相当简单。
{"id":0,"messages":["Level":0,"Message":"Style is required","Name":"Style"}],"operationResult":false}
messages 是包含严重性级别、错误所属属性和错误消息的对象列表。我会使用消息对象中的名称来匹配表单上所需的位置。
【问题讨论】:
-
仅供参考:部分视图并不意味着您必须刷新整个视图。
-
你能解释一下吗?您至少必须刷新绑定到相关模型的视图部分。我有一些包含大量项目的下拉框,我不太热衷于重建它并往返整个选择列表
-
如果您提供带有验证错误的回复消息(可能以 JSON 的形式)会更容易。这样我们就更容易详细说明解决方案了。因此,您提出了一个 Ajax 请求。向我们展示返回给客户的内容...
-
我知道我可以做一些类似 $('span[data-valmsg-for=Name').text(message) 的事情,但这让我有点紧张,直接修改它。我假设/希望 html 5 属性不会改变。如果数据注释确实触发了某些事情,那么后续验证会发生什么。我将对其进行测试,但这似乎不是一个好的解决方案
-
您找到更适合您的方法了吗?我遇到了同样的问题。
标签: asp.net-mvc-3 jquery-validate unobtrusive-validation