asp.net-mvc - 检查后端后显示错误消息
问题描述
我的控制器是这样的:
[HttpPost]
[Route("Somewhere")]
public JsonResult SetSomething(string propertyName, string propertyValue)
{
var successSave = this.SaveIt(propertyName,propertyValue);
if(successSave)
return Json(propertyValue);
else
// Show a message in front end that there was problem in saving
}
然后我的观点目前是这样的:
@Model.SomethingFeild
这只是加载该值并将其显示在其中的文本框字段中。那么如何更改它以能够处理我在控制器中编写的伪代码场景,以便如果数据库中有问题(不是前端 vlaidation),例如重复条目,那么它会回来并UI
告诉所以UI
显示一个硬编码的消息?
解决方案
将它包装在 try catch 块中并添加一个扩展方法来读取异常(或抛出的异常类型),如下所示:
[HttpPost]
[Route("Somewhere")]
public JsonResult SetSomething(string propertyName, string propertyValue)
{
try
{
var successSave = this.SaveIt(propertyName, propertyValue);
if (successSave)
return Json(new { success = true, value = propertyValue });
}
catch (Exception ex)
{
return Extensions.ReturnExceptionToView(ex);
}
}
示例扩展方法(静态方法):
internal static JsonResult ReturnExceptionToView(Exception ex)
{
List<object> viewErrors = new List<object>();
viewErrors.Add(new { ErrorMessage = ex.ToString() });
return new JsonResult() { Data = (new { success = false, errors = viewErrors }) };
}
然后在 JS 的响应中检查成功属性。下面的示例是使用 ajax 调用的响应并推送到 Knockout 可观察数组。
if (response.success) {
// do something with successful response
} else {
// we have an error in the response.errors collection
$.each(response.errors, function () {
vm.saveErrors.push(new ErrorMsg(this.ErrorMessage));
});
推荐阅读
- phonegap-build - PhoneGap 构建:错误:NOT_FOUND_ERR(缺少文件)
- r - 闪亮反应表的递归变化
- iframe - 如何将Vue组件的样式注入iframe?
- html - 如何使用 Foundation 在 div 内居中文本?
- r - 在 SQL Server 中使用 RevoScaleR 包(多线程)函数创建 R 相关矩阵
- vba - Chartobject.Delete 没有删除图表?
- android-jobscheduler - Oppo Realme1 Job Schduler 定期工作的最小间隔为 1 小时
- regex - 匹配正则表达式并用特殊字符替换错误
- python - 带有列名变量的 Executemany() SQL-Update 语句
- python - Google 日历 API 无法获取事件 colorid - Python