c# asp.net - Comment afficher un message d'exception dans la vue partagée Error.cshtml?




1 Answers

Remplacer le filtre:

// in your app_start folder
public class FilterConfig
{
    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        filters.Add(new ErrorFilter());
        filters.Add(new HandleErrorAttribute());
        filters.Add(new SessionFilter());
    }
}

// in your filters folder (create this)
public class ErrorFilter : System.Web.Mvc.HandleErrorAttribute
{
        public override void OnException(System.Web.Mvc.ExceptionContext filterContext)
        {
            var exception = filterContext.Exception;
            string controller = "";
            string action = "";


                controller = filterContext.RouteData.Values["controller"].ToString();
                action = filterContext.RouteData.Values["action"].ToString();




            if (filterContext.ExceptionHandled)
            {
                return;
            }
            else
            {
                //Determine the return type of the action
                string actionName = filterContext.RouteData.Values["action"].ToString();
                Type controllerType = filterContext.Controller.GetType();
                var method = controllerType.GetMethod(actionName);
                var returnType = method.ReturnType;

                //If the action that generated the exception returns JSON
                if (returnType.Equals(typeof(JsonResult)))
                {
                    filterContext.Result = new JsonResult()
                    {
                        Data = "DATA not returned"
                    };
                }

                //If the action that generated the exception returns a view
                if (returnType.Equals(typeof(ActionResult))
                || (returnType).IsSubclassOf(typeof(ActionResult)))
                {
                    filterContext.Result = new ViewResult
                    {
                        ViewName = "Error"
                    };
                }


            }

            //Make sure that we mark the exception as handled
            filterContext.ExceptionHandled = true;
        }
  }

Déclarez le modèle en haut de la vue 'error':

@model System.Web.Mvc.HandleErrorInfo

Ensuite, utilisez sur la page comme ceci:

@if (Model != null)
{
 <div>
     @Model.Exception.Message
 <br />
     @Model.ControllerName
 </div>
}

J'espère que cela t'aides.

mvc handling

Si je commence avec un nouveau projet MVC 5, dans le paramètre web.config customErrors mode = "on" permet à la vue partagée "Error.cshtml" de montrer quand je force (raise) une exception, mais cela montre seulement le texte suivant. .

Erreur.

Une erreur s'est produite lors du traitement de votre demande.

Comment puis-je transmettre des informations à cette vue pour afficher des informations plus pertinentes, telles que les erreurs survenues? Puis-je utiliser cette vue si j'utilise la méthode Global.asax ...

protected void Application_Error()

?




Related

c# asp.net-mvc razor error-handling asp.net-mvc-5