2016-04-06 10 views
2

Dies bezieht sich auf das Definieren von Routen unter Verwendung des Routenattributs. Ich habe zwei ControllerEs wurden mehrere Controllertypen gefunden, die der URL entsprechen. ASP.Net MVC

1.-Controller

[AllowAnonymous] 
[Route("Member/Login")] 
public ActionResult Login(string returnUrl) 
{ 
    ViewBag.ReturnUrl = returnUrl; 
    return View(); 
} 

2. Controller-

[Route("{CategoryURL}/{Keywords}")] 
public ActionResult BrowseProducts(string CategoryURL, string Keywords) 
{ 

} 

ich unten Störung erhalte Wenn versuchen URL xyz.net/Member/Login

mehrere Controller zugreifen Es wurden Typen gefunden, die der URL entsprechen. Dies kann passieren, wenn Attributrouten auf mehreren Controllern mit der angeforderten URL übereinstimmen. Die Anforderung folgende passende Controller-Typen gefunden hat: XYZ.Controllers.AccountController XYZ.Controllers.CoursesController

Ich bin mir bewusst, dass ich für die zweite Controller Optionale Parameter haben, also wenn ich versuche, xyz.net/ zugreifen Member/Login, sucht nach zwei Aktionsmethoden, um den Multiple Controller-Fehler zu erhalten.

Meine Frage ist, wie kann ich dieses Problem beheben, ohne meine aktuellen Routings zu ändern. Ich habe versucht Order, Precedence, aber nichts hat geklappt.

+0

versuchen zu erreichen, was in Ihrem Global.asax/App_Start Ihre Routen definiert werden? Attribut-Routing wird überwiegend in MVC 5 unterstützt. Wenn Sie es verwenden, müssen Sie das Attribut-Routing in Ihrer Konfiguration registrieren. – beauXjames

Antwort

0

Wie ich bemerkte oben, auf der Grundlage Ihrer gewählten Tags Sie verwenden MVC 4 noch Attribut Routing in MVC 5. unterstützt Wenn Sie wirklich in MVC 5, sind dann die folgenden Referenz wäre sehr hilfreich für Sie sein:

https://blogs.msdn.microsoft.com/webdev/2013/10/17/attribute-routing-in-asp-net-mvc-5/

Am wichtigsten ist, ist es wichtig, dass, wenn Sie Ihre Routen registrieren Sie aktiv Attribut Routing ->

public static void RegisterRoutes(RouteCollection routes) 
{ 
    routes.MapMvcAttributeRoutes(); 
} 

Und auch dafür sorgen, haben Sie keine andere Routen, die mit den Attributen confict könnte definiert werden Sie haben gewählt zu verwenden.

Andernfalls sollte Ihr ausgewähltes Attribut gut funktionieren. Ziemlich einfache Anwendung.

+0

Ich habe routes.MapMvcAttributeRoutes(); in meiner Routenkonfiguration. Die Dinge funktionieren gut, wenn ich [Route ("{CategoryURL}/{Keywords}")] entferne. Daher gibt es kein Problem beim Konfigurieren des Routings. – user6167624

Verwandte Themen