2012-04-04 10 views
0

Kann jemand Routing-Maps für mehrere Controller im selben Bereich mit mehreren Parameternamen bereitstellen?URL ohne eindeutige Parameternamen bereitstellen

Ich habe eine Anfrage-URL ohne die Parameternamen, um (nur Werte) für jeden Controller mit eindeutigen Parameternamen

Ist dies möglich (Zweideutigkeit zu vermeiden)?

Ich möchte diese Ausgabe in URL erhalten:

/myAreaName1/mycontrollerName1/Edit/12/23 
/myAreaName1/mycontrollerName2/Edit/someValue1/23 

so etwas wie dies mit:

context.MapRoute(
       "mapRouteName1", 
       "myAreaName1/{controller}/{action}/{customID}/{sustomID2}", 
       new { controller = "mycontrollerName1", action = "Index", customID= UrlParameter.Optional, sustomID2= UrlParameter.Optional }, 
       new string[] { "Project.Areas.SomeArea.Controllers" } 
      ); 

context.MapRoute(
       "mapRouteName1", 
       "myAreaName1/{controller}/{action}/{customValue}/{sustomID3}", 
       new { controller = "mycontrollerName2", action = "Index", customValue= UrlParameter.Optional, sustomID3= UrlParameter.Optional }, 
       new string[] { "Project.Areas.SomeArea.Controllers" } 
      ); 

Antwort

1

Sie benötigen RegEx Routen verwenden (ich einen Artikel zu diesem Thema hat mich auf führen wie man es einmal schafft ... hat super geklappt). Ich habe sie in der Vergangenheit für diese Art von Dingen verwendet. Ich würde vorschlagen, dass Sie das nicht tun, da es zu Fehlern führen könnte. Was ist, wenn Sie Regex-Regeln hinzufügen, die auf allen Zahlen basieren, und die andere Route verwendet, wenn der Parameter nicht-numerische Werte hat ... dann gibt ein Benutzer alle Zahlen an dieser Stelle ein? Ich denke, es wird zu schwer zu finden, Bugs.

Willst du etwas besseres? Besteht das Unternehmen darauf, dass Sie diese URLs verwenden? Sie könnten auch in Betracht ziehen, URL-Rewrite-Regeln zu verwenden, um sie auf eine andere Route außerhalb des MVC-Frameworks zu schreiben, und dann die Routen so zu ändern, dass sie eindeutiger sind.

+0

Anstatt zu sagen, dass dies eine wirklich schlechte Idee ist, warum nicht, warum Sie denken, dass es eine schlechte Idee ist? Viel nützlicher auf diese Weise :) –

+0

Shane Courtrille, habe ich genau das getan ... gutes Denken. – CrazyDart

+0

Danke für Ihre Antwort. Ich werde in das URL-Rewriting schauen, das sich als bessere Lösung erweisen könnte. – matendie

Verwandte Themen