gpt4 book ai didi

asp.net-mvc - 将自定义错误从 JsonResult 方法返回到 ajax post 错误函数,并将其显示在验证摘要下

转载 作者:行者123 更新时间:2023-12-01 07:18:48 26 4
gpt4 key购买 nike

我有类型为“JsonResult”的操作方法。我使用 ajax post 来调用它。我想将自定义错误从操作方法返回到 ajax post 并将这些错误显示为验证摘要。

[HttpPost]
public JsonResult RegisterUser(RegistrationModel model)
{
//if username already exists return custom error to be displayed on view
//under validation summary
// control should go back to error function with message to be displayed.
}


$.ajax({
url: url,
type: 'POST',
dataType: 'json',
data: ko.toJSON(model),
contentType: "application/json; charset=utf-8",
success: function (result) {
success(result)
},
error: function (req, status, error) {
error(req, status, error);
}
});

function success(result) {
//Do Something
}

function error(req, status, error) {
//Display error messages under validation summary.
}

最佳答案

根据我的理解,当你执行ajax post时,它并不关心模型验证是否通过,它只关心是否得到服务器的响应。如果服务器抛出异常,那么它将触发您的 ajax 错误函数。

所以我要做的就是返回一个 json 对象,让我知道验证状态。

if(!ModelState.IsValid){
var modelStateErrors = this.ModelState.Keys.SelectMany(key => this.ModelState[key].Errors);
var message = "Please fix the following: " + Environment.NewLine;

foreach (var modelStateError in modelStateErrors)
{
message += modelStateError.ErrorMessage + Environment.NewLine;
}

return Json(new {success = false, response = message})
}


// Do other logic

return Json(new {success = true, response = "Successful message"})

一旦你传回这个对象,你就可以执行以下Javascript

success: function (result) {
if(result.success === true){
$('#status-div').empty().html('<div class="success">' + result.response + '</div>');
}
if(result.success === false){
$('#status-div').empty().html('<div class="fail">' + result.response + '</div>');
}

}

关于asp.net-mvc - 将自定义错误从 JsonResult 方法返回到 ajax post 错误函数,并将其显示在验证摘要下,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15981333/

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