2017-05-18 3 views
2

in meinem Konto/Login Controller-Methode, ich habe so etwas wie:ASP.NET MVC RedirectToAction Umleitung nicht zum Index eines anderen Controller

var classA = GetObject(); //actual code omitted 
switch(classA.PropA) 
{ 
    case 1: 
     return RedirectToAction("Action2", "Registration"); 
    //more case code omitted 
    default: 
     return RedirectToAction("Index", "Registration"); 
} 

Alle Fälle funktionieren im Schalterblock mit Ausnahme des Standard wo es annimmt, ist In RegistrationController zum Index wechseln. Stattdessen führe ich zu localhost: port/Registration, wo der action Index weggelassen wird.

Es funktioniert gut, wenn der ActionName zu etwas anderem geändert wird - Index2 zum Beispiel. Funktioniert auch, wenn der Controller-Name zu etwas anderem geändert wird.

RouteConfig ist nur die automatisch generierten Code aus dem Projekt zu erstellen, die sich wie folgt:

public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

     routes.MapRoute(
      name: "Default", 
      url: "{controller}/{action}/{id}", 
      defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
     ); 
    } 

Vielen Dank im Voraus.

+0

Was passiert, wenn 'RedirectToAction („Index“,„Registrierung“haben könnten); 'führt aus? – User3250

+0

Sorry, ich habe vergessen, das zu erwähnen. Es geht nur zu localhost: Port/Registrierung statt –

+0

Haben Sie Debugger auf Index Aktionsmethode gesetzt? – User3250

Antwort

3

umleiten Es ist nichts falsch mit dem Weg, den Grund Einstellung nicht Index im URL nicht enthalten, weil nach default route

url: "{controller}/{action}/{id}", 
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 

wenn Sie /Registration die Route bereits weiß, geben Sie die Standardaktion, die index ist, so fügt es nicht hinzu /index in URL und über

403,14

verboten

, wenn Sie auf diesem Posten sehen HTTP Error 403.14 - Forbidden - MVC 4 with IIS Express es sein könnte, weil Sie eine Datei oder einen Ordner mit dem Namen Registration im Projektverzeichnis

+0

Dies ist absolut genau richtig! Vielen Dank! –

+0

@ChenChen Sie können meine Antwort akzeptieren, wenn es geholfen hat :) Wenn Sie nicht wissen, wie Sie dies überprüfen können [Wie man eine Antwort akzeptiert] (https://meta.stackexchange.com/questions/5234/how-does-accepting- An-Antwort-Arbeit) – Usman

+0

Fertig. Danke auch dafür :) –

0

Versuchen auf

return RedirectToAction("Index"); 

und in RouteConfig Sie können die Routen Aktion "Index" auf Controller "Registrierung"

wie

routes.MapRoute("Index", "Index", new { controller = "Registration", action = "Index" }); 
+0

Sie sollten diesen Code auch in RouteConfig überprüfen.routes.MapRoute ("Registrierung", "Registrierung/{aktion}/{id}", neu {controller = "Registrierung", Action = "Index", id = UrlParameter.Optional}); – Azhar

1

Wenn Sie die es RedirectionToAction("Index","ControllerName"); verwenden verwenden Umleiten Sie mit der Standard-Mapping-Konfiguration zu localhost:port/ControllerName und in Ihrem Fall, wenn Sie dieausführenwird es Ihnen zu localhost:port/Registration

+0

Das macht die Dinge viel auf. Vielen Dank. Ist "Registrierung" jedoch ein reserviertes Wort oder etwas? Wie ich bekomme "HTTP Error 403.14 - Forbidden Der Webserver ist konfiguriert, nicht den Inhalt dieses Verzeichnisses" mit diesem Controller, aber nicht mit anderen Controllern –

Verwandte Themen