使用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属性中吗?如果是,如何?

使用filter处理mvc c#中的错误

一个选项是使用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 重定向结果