J'ai un site 1.0 mvc asp.net qui sert une partie du contenu d'une hiérarchie de niveau 2 /catégorie/articleComment gérer 'View not found' InvalidOperationException dans asp.net mvc?
Quand les choses fonctionnent correctement les cartes d'article à vue et la vue obtient rendu. Toutefois, lorsque l'URL rencontre la condition de routage mais la vue n'existe pas, une exception est levée que je ne peux pas intercepter dans l'action Contrôleur.
Routing:
routes.MapRoute(
"Article",
"{category}/{article}.aspx",
new { controller = "MyController", action = "Article" }
);
MyController Action:
public ActionResult Article(string category, string article)
{
string path = string.Format("~/Views/{0}/{1}.aspx", category, article);
ViewResult vr = View(path);
return vr;
}
Cependant, lorsque la vue ne se trouve pas, un System.InvalidOperationException
est généré que je ne peux pas attraper dans l'action du contrôleur.
Détails de l'exception: System.InvalidOperationException: La vue '~/Vues/my-catégorie/my-article-avec-long name.aspx' ou son maître n'a pas pu être trouvé. Les endroits suivants ont été recherchées: ~/Vues/my-catégorie/my-article-avec-long name.aspx
je peux intercepter l'erreur dans la méthode Application_Error()
dans global.asax.cs
mais:
- ne savent pas comment rediriger à la vue d'erreur à partir de là
- je me demande s'il y a un meilleur endroit plus proche de l'endroit où l'exception est soulevée .
J'ai essayé et aimé la solution. Le seul problème est que si vous obtenez une exception InvalidOperationException pour une raison différente, il en résultera un 404. Une telle exception s'est produite lors de la tentative de sérialisation de quelque chose. – Bealer