Json返回时如何读取modelstate错误?
如何显示 JSON 返回的 ModelState 错误?
我想做这样的事情:
if (!ValidateLogOn(Name, currentPassword))
{
ModelState.AddModelError("_FORM", "Username or password is incorrect.");
//Return a json object to the javascript
return Json(new { ModelState });
}
视图中的代码必须是什么才能读取 ModelState 错误并显示它们?
我在视图中读取 JSON 值的实际代码如下:
function createCategoryComplete(e) {
var obj = e.get_object();
alert(obj.Values);
}
How can I display ModelState errors returned by JSON?
I want to do something like this:
if (!ValidateLogOn(Name, currentPassword))
{
ModelState.AddModelError("_FORM", "Username or password is incorrect.");
//Return a json object to the javascript
return Json(new { ModelState });
}
What must be my code in the view to read the ModelState errors and display them?
My actual code in the view to read the JSON values is as follows:
function createCategoryComplete(e) {
var obj = e.get_object();
alert(obj.Values);
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
这是代码草案,但同样的想法在生产中也适用于我。
这里的主要思想是 Json 错误有预定义的标签名称,普通对象不会有。对于错误验证错误,使用 JavaScript 重新创建 HTML(顶部摘要和表单元素突出显示)。
服务器端:
客户端:
This is draft code but the same idea works for me in production.
The main idea here is that Json errors have predefined tag names, that no normal objects will have. For errors validation errors HTML is re-created using JavaScript (both top summary and form elements highlighting).
Server side:
Client side:
为什么不将原始的 ModelState 对象返回给客户端,然后使用 jQuery 读取值。对我来说,它看起来简单得多,并使用通用数据结构(.net 的
ModelState
)C#:
js:
Why not return the original
ModelState
object to the client, and then use jQuery to read the values. To me it looks much simpler, and uses the common data structure (.net'sModelState
)C#:
js:
这是对 queen3 客户端代码的一个微小调整,它处理特定的验证消息,并创建一个与 MVC3 创建的文档类似的文档:
this is a tiny tweak to queen3's client side code which handles specific validation messages, and creates a similar document to that created by MVC3:
C#
JavaScript
C#
JavaScript
请参阅下面的代码,并对布伦特的答案进行了一些修改。 CheckValidationErrorResponse 会查找验证摘要,无论其处于有效还是无效状态,如果未找到,则将其插入。如果在响应中发现验证错误,则会将validation-summary-errors类应用于摘要,否则它将应用validation-summary-valid。它假设 CSS 存在来控制摘要的可见性。
该代码清除现有的字段验证错误实例,并对响应中发现的错误重新应用它们。
See below for code with a few amendments to Brent's answer. CheckValidationErrorResponse looks for the Validation Summary regardless of whether it's in the valid or invalid state, and inserts it if not found. If validation errors are found in the response, it applies the validation-summary-errors class to the Summary, else it applies validation-summary-valid. It assumes CSS is present to control the visibility of the Summary.
The code clears existing instances of field-validation-error, and reapplies them for errors found in the response.
如果返回 JSON,则无法使用 ModelState。视图所需的所有内容都应包含在 JSON 字符串内。因此,您可以将错误添加到正在序列化的模型中,而不是将错误添加到 ModelState 中:
If you are returning JSON, you cannot use ModelState. Everything that the view needs should be contained inside the JSON string. So instead of adding the error to the ModelState you could add it to the model you are serializing: