2017-02-11 3 views
1

Ich habe drei Rollen in meiner Anwendung. Ich habe eine Indexseite, die nur für nicht registrierte Benutzer zugänglich sein soll. Wenn ein registrierter Benutzer versucht, zur Indexseite zu wechseln, ist es meine Idee, ihn stattdessen auf seine Indexseite umzuleiten.Umleiten zu einer anderen Aktion, wenn der Benutzer nicht in einer bestimmten Rolle ist

Ich versuche, es so zu tun:

public ActionResult Index() 
     { 
      if (User.IsInRole("CompanyAdministrator")) 
      { 
       return RedirectToAction("Index", "CompaniesController"); 

      } 
      else if (User.IsInRole("Employee")) 
      { 
       return RedirectToAction("Index", "EmployeeController"); 
      } 
      return View(); 

Also, wenn ich als CompanyAdministrator bin angemeldet und ich versuche zu Home/Index zu gehen, intead von umgeleitet immer erhalte ich eine

Serverfehler in '/' Anwendung.

Die Ressource kann nicht gefunden werden.

und die URL sieht wie folgt aus: http://localhost:49858/CompaniesController

Sorry, wenn die Frage zu subjektiv, aber ich konnte keine explenation für dieses Problem finden, und ich kann es mir nicht explaing.

Irgendwelche Tipps zu diesem Thema?

Antwort

2

Sie benötigen das Suffix Controller nicht. Verwenden Sie einfach den Controller-Namen ohne Controller Teil.

Dies sollte funktionieren.

return RedirectToAction("Index", "Companies"); 

Die Controller Suffix von dem MVC Rahmen verwendet werden, um alle Steuerungen zu erkennen, wenn die Anwendung startet (Routen registrieren). Ansonsten muss ein Endbenutzer (derjenige, der den Code schreibt) normalerweise nicht den vollständigen Klassennamen irgendwo verwenden!

Anscheinend Name (C# 6) cannot be used to get the Controller class name!

1

Sie müssen "Controller" nicht im Controllernamen hinzufügen. Es sollte

return RedirectToAction("Index", "Companies"); 
sein
Verwandte Themen