2011-01-06 16 views
0

Kann mir jemand sagen, wie (und was wäre der beste Weg) Routen konfiguriert werden könnten, damit die folgenden URLs in ASP.Net MVC 3 koexistieren?Können diese Routen koexistieren?

/Product/a38e8843-195f-4ee8-b89a-2549b753a307 

Karten Index Aktion auf Productbreite id = a38e8843-195f-4ee8-b89a-2549b753a307

/MemberShip/LogOn 

Karten

Aktion auf Membership-Controller anmelden

ich mich heraus werde Irgendwie muss ich eine Konfiguration vornehmen, die auf dem spezifischen Controller basiert - ich weiß einfach nicht wie! :)

+0

Nur wenn sie miteinander respektvoll sind. – jfar

Antwort

2

Sie sollten die folgenden Routen vor den Standard-Routen hinzufügen:

"Products/{productId}" and "MemeberShip/{action}" 

Jeder zeigt auf seine spezifischen Controller und Aktion.

Erstellen Sie Ihre Aktionen normalerweise:

public class Produkte: Controller { öffentliche Aktion ViewProduct (string productId) { ...

public class Mitgliedschaft: Controller { öffentliche Aktion Logon () { ...

Und wenn Sie Ihre Routen zuordnen, fügen Sie zwei spezifische Routen hinzu: routes.MapRoute ( "ViewProduct", "Produkte/{productId}", new {controller = "Produkte", action = "ViewProduct"} ); routes.MapRoute ( "Anmelden", "Mitgliedschaft/{aktion}", neu {controller = "Mitgliedschaft"} );

Wenn Sie die Standardrouten verwenden, ist diese letzte nicht erforderlich, da sie auf dem Muster "controller/action" liegt.

Hier können Sie eine Menge Tutorials auf MVC finden und sicher, Routing: http://www.asp.net/mvc/tutorials/asp-net-mvc-overview-cs

+1

Eigentlich sollte die zweite mit der Standardroute in Ordnung sein. –

+0

Ja, du brauchst die zweite Route nicht – RPM1984

+0

Ich würde auch empfehlen, eine Regex-Einschränkung auf productID zu setzen (ich gehe davon aus, dass deine productIds standardisiert sind) der Produktcontroller kann durchfallen. – Chao

Verwandte Themen