2010-11-07 12 views
0

J'essaie de créer une page http://domain.com/NotAuthorized.Comment créer une page de destination simple dans MVC2

est allé à Views\Shared et a ajouté une vue appelée NotAuthorized sorcière provient le nom du fichier NotAuthorized.aspx

alt text

dans mes routes j'ai écrit

routes.MapRoute(
    "NotAuthorized", // Route name 
    "NotAuthorized.aspx" // Route Url 
); 

, mais chaque fois que j'accéder http://domain.com/NotAuthorized je reçois une erreur

La ressource est introuvable.

Qu'est-ce qui me manque?

Comment y accéder sans utiliser View("NotAuthorized") dans le Controller, en d'autres termes, ne passant par aucun contrôleur.

Répondre

1

Vous ne pouvez pas accéder aux vues directement sans passer par un contrôleur. Toutes les pages du dossier Views ne peuvent pas être desservies directement. Donc, une façon d'accomplir ce que vous cherchez est d'écrire une coutume [Authorize] attribut et définir la page d'erreur:

protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext) 
{ 
    if (!filterContext.HttpContext.User.Identity.IsAuthenticated) 
    { 
     base.HandleUnauthorizedRequest(filterContext); 
    } 
    else 
    { 
     filterContext.Result = new ViewResult { ViewName = "NotAuthorized" }; 
    } 
} 
+0

je manque juste la 'filterContext.Result = new ViewResult {ViewName = « NotAuthorized »};' comme j'avais déjà 'RequiresRoleAttribute' en place, mais je redirais en tant que' filterContext.HttpContext.Response.Redirect (notAuthorizedUrl, true); '. Merci pour l'information. – balexandre

0

Je ne sais toujours pas sur la façon de l'accomplir, mais ce que je faisais était d'utiliser la maison Controller et créer une action appelée NotAuthorized

public ActionResult NotAuthorized() 
{ 
    return View(); 
} 

Et ajouter une route comme

routes.MapRoute(
    "NotAuthorized", // Route name 
    "NotAuthorized", // URL with parameters 
    new { controller = "Home", action = "NotAuthorized" } // Parameter defaults 
); 

Et fonctionne bien maintenant, je peux facilement rediriger dans n'importe quelle partie de ma logique d'entreprise à /Notauthorized et cela va bien tourner.