Asp.net mvc HandleErrorAttribute将异常消息添加到ModelState并继续

Asp.net mvc HandleErrorAttribute将异常消息添加到ModelState并继续,asp.net-mvc,handleerror,Asp.net Mvc,Handleerror,我希望捕获所有DbEntityValidationException消息,将它们添加到ModelState,并继续查看导致异常的视图,该视图将使用@Html.ValidationSummary显示ModelState错误 除了HandleErrorAttribute的扩展类之外,我已经完成了所有工作,我只编写了指向/Shared/Error视图的重定向 或者如果我写- filterContext.ExceptionHandled=true; 它返回一个空白视图 public class Han

我希望捕获所有DbEntityValidationException消息,将它们添加到ModelState,并继续查看导致异常的视图,该视图将使用@Html.ValidationSummary显示ModelState错误

除了HandleErrorAttribute的扩展类之外,我已经完成了所有工作,我只编写了指向/Shared/Error视图的重定向 或者如果我写- filterContext.ExceptionHandled=true; 它返回一个空白视图

 public class HandleLogErrorAttribute : HandleErrorAttribute
{
    //Log the filterContext Exception Details
    public override void OnException ( ExceptionContext filterContext )
    {
        var exception = filterContext.Exception;
        var controller = ( (Controller) filterContext.Controller );

        //Log here 

        //Add Validation Exception messages to ModelState here
        if ( exception is DbEntityValidationException ) {
            var dbEx = filterContext.Exception as DbEntityValidationException;
            foreach ( var ves in dbEx.EntityValidationErrors ){
                foreach ( var ve in ves.ValidationErrors ) {
                    controller.ModelState.AddModelError( string.Empty, ve.ErrorMessage );
                }
             }
             //HOW to continue to the View that caused the exception with the model state now filed with the Validation Exceptions?

        }
    }
}

HandleErrorAttribute用于在发生异常时显示错误页面,以不返回视图,并且您无权访问模型,因此无法返回视图。如果要返回带有错误消息的视图,请在POST方法中捕获异常,添加ModelStateError并返回视图。我已经从中获得了使用服务层结构概念进行验证的功能,但这将服务层与ModelStateDictionary绑定。这意味着我不会工作。因此,我正在考虑返回业务规则错误的方法,然后将它们从服务层推送到模型状态