gpt4 book ai didi

asp.net-mvc - Json 返回时如何读取模型状态错误?

转载 作者:行者123 更新时间:2023-12-03 21:04:23 27 4
gpt4 key购买 nike

如何显示 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 });
}

View 中的代码必须是什么才能读取 ModelState 错误并显示它们?

我在 View 中读取 JSON 值的实际代码如下:
function createCategoryComplete(e) { 
var obj = e.get_object();
alert(obj.Values);
}

最佳答案

这是代码草案,但同样的想法在生产中对我有用。
这里的主要思想是 Json 错误具有预定义的标签名称,普通对象不会有。对于错误验证错误,使用 JavaScript 重新创建 HTML(顶部摘要和表单元素突出显示)。

服务器端:

  public static JsonResult JsonValidation(this ModelStateDictionary state)
{
return new JsonResult
{
Data = new
{
Tag = "ValidationError",
State = from e in state
where e.Value.Errors.Count > 0
select new
{
Name = e.Key,
Errors = e.Value.Errors.Select(x => x.ErrorMessage)
.Concat(e.Value.Errors.Where(x => x.Exception != null).Select(x => x.Exception.Message))
}
}
};
}

in action:
if (!ModelState.IsValid && Request.IsAjaxRequest())
return ModelState.JsonValidation();

客户端:
function getValidationSummary() {
var el = $(".validation-summary-errors");
if (el.length == 0) {
$(".title-separator").after("<div><ul class='validation-summary-errors ui-state-error'></ul></div>");
el = $(".validation-summary-errors");
}
return el;
}

function getResponseValidationObject(response) {
if (response && response.Tag && response.Tag == "ValidationError")
return response;
return null;
}

function CheckValidationErrorResponse(response, form, summaryElement) {
var data = getResponseValidationObject(response);
if (!data) return;

var list = summaryElement || getValidationSummary();
list.html('');
$.each(data.State, function(i, item) {
list.append("<li>" + item.Errors.join("</li><li>") + "</li>");
if (form && item.Name.length > 0)
$(form).find("*[name='" + item.Name + "']").addClass("ui-state-error");
});
}

$.ajax(... function(response) {
CheckValidationErrorResponse(xhr.responseText); } );

关于asp.net-mvc - Json 返回时如何读取模型状态错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2808327/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com