Vous ne pouvez pas demander directement Voir à partir d'une application MVC sans passer par un Manette. Il n'a jamais été conçu pour cela (et dans la plupart des cas l'empêche explicitement). Cela étant dit, il est possible de changer ce que View est retourné à partir de l'action d'un contrôleur, en fait le HandleErrorAttribute
le fait par défaut. Contrairement à une application ASP.NET typique, qui vous redirige vers une page comme error.aspx lorsqu'une exception se produit, le HandleErrorAttribute
prend un nom de vue et lorsqu'une erreur se produit, il renvoie cette vue. Cependant, il ne vous redirige pas vers la page que vous avez initialement demandée. Donc, si vous demandez une page pour voir les détails d'une personne (People/Details/123) et rencontrez une erreur, l'URL restera la même mais la vue retournée sera celle de l'affichage des erreurs. Gardez à l'esprit que l'attribut HandleErrorAttribute
ne gérera pas les erreurs survenant en dehors de MVC. Les erreurs génériques IIS et ASP.NET ne seront donc pas gérées.
Si vous souhaitez rediriger vers une vue d'erreur en utilisant javascript, vous devez utiliser le HandleErrorAttribute
. Si vous voulez avoir une page entière et pas seulement une vue, je vous recommande d'ajouter une action au Home Controller (ou même de créer un contrôleur appelé Errors) et d'en demander la page. Si vous n'aimez pas l'idée de demander une page en utilisant /Home/Error
ou /Errors/Exception
, vous pouvez toujours ajouter un nouvel itinéraire à l'application afin qu'il soit raccourci à/Erreur ou/Exception.
routes.MapRoute("ErrorPage", // Route name
"Error", // URL with parameters
new {controller = "Home", action = "Error"});
ou
routes.MapRoute("ExceptionPage", // Route name
"Exception", // URL with parameters
new {controller = "Errors", action = "Exception"});
Merci pour votre réponse ... –
Je doute, à partir du contrôleur, nous pouvons rediriger vers la page de vue (sans contrôleur) en utilisant le code de 'retourner (Voir » Test "); droite? –
Non, cela ne redirige pas. C'est en train de rendre une vue. Il y a une très grande différence. Rediriger signifie effectuer une autre requête HTTP. Le rendu signifie que cette vue est exécutée sous la requête en cours. –