在MVC 3项目中显示由JsonResult返回的ModelState错误?(Display ModelState error returned by JsonResult in MVC 3 project?)
我有一个使用JsonResult操作而不是ActionResult的创建页面。 在ActionResult操作中,错误显示在违规字段旁边的视图中。 现在JsonResult只返回一个显示在警告框中的字符串。
我可以在视图上显示ModelState错误吗?
控制器
[HttpPost] public JsonResult Create(Tload tload) { if (ModelState.IsValid) { ...save changes return Json(new { Success = 1, TransloadID = transload.TransloadID, ex = "" }); } else { string totalError = ""; foreach (var obj in ModelState.Values) { foreach (var error in obj.Errors) { if (!string.IsNullOrEmpty(error.ErrorMessage)) { totalError = totalError + error.ErrorMessage + Environment.NewLine; } } } return Json(new { Success = 0, ex = new Exception(totalError).Message.ToString()}); }jQuery / JavaScript代码中的视图
function Save() { // Step 1: Read View Data and Create JSON Object ...do stuff here // Set 2: Ajax Post // Here i have used ajax post for saving/updating information $.ajax({ url: '/Expedite/Create', data: JSON.stringify(salesmain), type: 'POST', contentType: 'application/json;', dataType: 'json', success: function (result) { if (result.Success == "1") { window.location.href = "/Expedite/index"; } else { alert(result.ex); } } }); }I have a create page that uses a JsonResult action instead of ActionResult. In the ActionResult action, the errors are displayed on the view beside the offending field. Right now the JsonResult only returns a string that is displayed in an alert box.
Can I display the ModelState errors on the view?
The controller
[HttpPost] public JsonResult Create(Tload tload) { if (ModelState.IsValid) { ...save changes return Json(new { Success = 1, TransloadID = transload.TransloadID, ex = "" }); } else { string totalError = ""; foreach (var obj in ModelState.Values) { foreach (var error in obj.Errors) { if (!string.IsNullOrEmpty(error.ErrorMessage)) { totalError = totalError + error.ErrorMessage + Environment.NewLine; } } } return Json(new { Success = 0, ex = new Exception(totalError).Message.ToString()}); }jquery/javascript code in view
function Save() { // Step 1: Read View Data and Create JSON Object ...do stuff here // Set 2: Ajax Post // Here i have used ajax post for saving/updating information $.ajax({ url: '/Expedite/Create', data: JSON.stringify(salesmain), type: 'POST', contentType: 'application/json;', dataType: 'json', success: function (result) { if (result.Success == "1") { window.location.href = "/Expedite/index"; } else { alert(result.ex); } } }); }最满意答案
有一个错误的占位符,并最初隐藏它
<div id="err"></div>以及何时出现错误
else { $("#err").html(result.ex); $("#err").show(); //or you can use .slideDown() etc }have a placeholder for the error and hide it initially
<div id="err"></div>and when errors are raised
else { $("#err").html(result.ex); $("#err").show(); //or you can use .slideDown() etc }更多推荐
发布评论