使用filter处理mvc c#中的错误
本文关键字:错误 mvc filter 处理 使用 | 更新日期: 2023-09-27 18:24:03
我有很多方法,我使用jquery ajax调用这些方法。
为了处理fail方法中的任何错误,我使用以下代码;
public async Task<ActionResult> UpdateStockTransactionAsync(
string TransactionDate, string Quantity, string ProductId, string TabCount)
{
try
{
//my code goes here
}
catch (System.Web.Http.HttpResponseException ex)
{
var msg = ex.Response.Content.ReadAsStringAsync().Result;
var errorModel = JsonConvert.DeserializeObject<AcknowledgementModel>(msg);
return new HttpStatusCodeResult(500, errorModel.errormessage);
}
catch (Exception ex)
{
return new HttpStatusCodeResult(500, ex.Message);
}
}
我似乎在整个代码中重复了很多,有可能把它拉到filter属性中吗?如果是,如何?
一个选项是使用Controller类上可用的可重写方法OnException。
protected override void OnException(ExceptionContext filterContext)
{
var exception = filterContext.Exception;
if (exception is System.Web.Http.HttpResponseException) // Catch HttpResponseException
{
var msg = ex.Response.Content.ReadAsStringAsync().Result;
var errorModel = JsonConvert.DeserializeObject<AcknowledgementModel>(msg);
filterContext.Result = new HttpStatusCodeResult(500, errorModel.errormessage);
}
else // catch (Exception ex)
{
filterContext.Result = new HttpStatusCodeResult(500, ex.Message);
}
base.OnException(filterContext);
}
您可以使用filterContext.Result
重定向结果