2016-12-01 1 views
2

Ich bin nur verwirrt, warum funktioniert meine RedirectToRoute() -Methode nicht. Ich habe ein RouteConfig.cs wie diese meine Standard-Controller Startseite und AktionWie verwende ich RedirectToRoute ("routeName") in MVC?

routes.MapRoute(
    "pattern1", 
    "{action}", 
    new { controller = "Home", action = "About" } 
); 

routes.MapRoute(
    "pattern2", 
    "{controller}/{action}/{id}", 
    new { controller = "Admin", action = "Index", id = UrlParameter.Optional } 
); 

auf dieser Konfigurationsdatei über heißt immer, jetzt in der Aktionsmethode I RedirectToRoute() mit dem folgenden Wert nenne wie diese

public ActionResult Index() 
{ 
    return View(); 
} 
public ActionResult About() 
{ 
    return RedirectToRoute("pattern2"); 
} 

Warum ist die RedirectToRoute() nicht Admin/Index Aktion

Antwort

3

Versuchen Sie, diese Aufruf:

return RedirectToRoute(new 
{ 
    controller = "Admin", 
    action = "Index", 
    id = null 
}); 

Sie können auch die RedirectToAction() -Methode verwenden. Es scheint intuitiver.

+0

Ja, ich weiß, wie man diese Überladung verwendet, aber ich versuche zu lernen, die Überlastung zu verwenden, die angibt, die Route zu benennen. Wie benutze ich das, dh RedirectToRoute (string RouteName) –

1

Dies liegt an der von Ihnen definierten Route. RedirectToRoute() leitet zu der von Ihnen definierten Route um. Die URL, die Sie für "pattern2" definiert haben, ist "{controller}/{action}/{id}". Wenn Sie die Überladung verwenden möchten, die nur den routeName akzeptiert, müssen Sie die URL explizit in Ihrer RouteConfig definieren. Beispiel:

routes.MapRoute(
    "pattern2", 
    "Admin/Index", 
    new { controller = "Admin", action = "Index", id = UrlParameter.Optional } 
); 

Wenn Sie die URL explizit zu definieren, nicht wollen, dann müssen Sie eine andere Überlastung von RedirectToRoute() verwenden, die die Routevalues ​​Objekt akzeptiert.

+0

Warum bringe ich nicht zum Standard-Controller und Aktion, die ich die MapRoute-Methode() erwähnt habe? Wenn ich Admin/Index definieren muss, dann wäre es ein statischer Wert. Was ist der Zweck von RedirectToRoute()? Ich hätte stattdessen redirectToAction verwenden können. Ich möchte den genauen Benutzer dieser Methode wissen, damit ich es ausnutzen könnte. Danke –

Verwandte Themen