J'ai une application ASP.NET MVC2 qui utilise un contrôleur parent pour configurer des variables spécifiques utilisées autour de l'application. J'applique également la validation pour m'assurer qu'un ID dans l'URI existe dans la base de données. Si ce n'est pas le cas, je redirige et arrête l'exécution du script.Contrôleur parent ASP.NET MVC2 non redirigé
Mon contrôleur mère ressemble à ceci:
// Inside class declaration
// Set instance of account object to blank account
protected Account account = new Account();
protected override void Initialize(System.Web.Routing.RequestContext requestContext) {
// Call parent init method
base.init(requestContext);
// Check to make sure account id exists
if (accountRepos.DoesExistById(requestContext.RouteData.Values["aid"].ToString()) {
account = accountRepos.GetById(requestContext.RouteData.Values["aid"].ToString());
} else {
requestContext.HttpContext.Response.Redirect("url");
requestContext.HttpContext.Response.End();
}
}
Au début, cela a fonctionné, mais maintenant, quand un identifiant incorrect est entré, il ne redirige pas et jette un NullPointerException lorsque la classe de compte est utilisé. Au départ, je déclarais simplement que la variable de compte l'instanciait, mais cela prouvait aussi qu'il rejetait des exceptions et qu'il ne redirigeait pas.
La raison pour laquelle j'essaie de terminer l'exécution du script est que je veux m'assurer qu'il s'arrête même si la redirection ne fonctionne pas. Un peu comme appeler exit() après header() dans PHP: p. Si je fais cela mal, j'apprécierais n'importe quel pointeur. Je me demande simplement comment je peux résoudre ce problème.
Toute aide est grandement appréciée = D
+ 1 solution intéressante; J'étais sur le point de recommander un filtre d'autorisation personnalisé, mais j'aime mieux l'IRouteContraint – Tahbaza
Great! Je vais essayer ça. – Swamp56
J'ai lu sur l'interface IRouteConstraint et implémenté ma propre classe de contraintes et ça a marché! – Swamp56