2009-05-09 7 views
0

Dans ASP.NET MVC Je voudrais faire quelque chose comme:Comment puis-je rediriger après la détermination d'ActionResult?

  • Laissez un contrôleur de base pour vérifier le type de ActionResult.
  • Si le ActionResult est un ViewResult, chargez des données partagées pour toutes les vues.
  • Si les données partagées remplissent certains critères spécifiques, rediriger vers une page de connexion.

Comment implémenteriez-vous cela?


Je pensais à ce qui suit, mais il semble que la redirection ne fonctionne pas (en raison de l'action a déjà été exécutée?). Y a-t-il un moyen de contourner ceci?

public abstract class BaseController : Controller 
{ 
    protected override void OnActionExecuted 
     (ActionExecutedContext filterContext) 
    { 
     base.OnActionExecuted(filterContext); 

     // If the result is a view result, 
     // then it loads the shared data (for use in shared view): 
     if (filterContext.Result is ViewResult) 
      LoadSharedData(); 
    } 

    private void LoadSharedData() 
    { 
     // TODO: Loads the data that is common for all views. 
     // TODO: If the shared data fulfills some specific criteria, 
     //  it will redirect to a login page. 
     Redirect("http://someurl"); 
    } 
} 

Répondre

0

Je pense avoir trouvé une réponse en essayant ceci:

filterContext.Result = Redirect("http://someurl"); 

Il fonctionne.