2010-12-11 15 views
0

Ich habe die folgende Route: {param1}/{param2}/{param3} und ich möchte es an Aktion, die Parameter param1 nicht (es spielt keine Rolle). Wenn ich Parameter param1 in der Aktionsmethode einfach nicht definiere, wird route nicht von ASP.NET MVC ausgewählt. So, jetzt muss ich param1 Parameter in der Aktion definieren und einfach nicht verwenden.ASP.NET MVC ignorieren Route Wert

Gibt es eine Möglichkeit, einige Routenwerte zu ignorieren, um sie nicht in Aktionsmethoden definieren zu müssen?

Antwort

0

Warum Sie nicht Ihre Parameter neu anordnen, so dass es geht:

 routes.MapRoute(
      //// Route name 
      "myNewRoute", 
      //// URL with parameters 
      "{param2}/{param3}/{param1}", 
      //// Parameter defaults 
      new { controller = "MyController", action = "MyActionName", param2 = string.Empty, param3 = string.Empty, param1 = string.Empty }); 

Nun, wenn Sie nur die ersten beiden Parameter liefern, dauert es param2 und param3. param1 wird standardmäßig auf string.empty festgelegt.

Wenn Sie alle drei Parameter angeben, haben param1, param2 und param3 alle Werte.

+0

Angesichts der zwei Antworten, die ich zur Verfügung gestellt habe, bevorzuge ich dieses für seine Einfachheit. – MedicineMan

0

Ein zweiter Ansatz wäre die Verwendung von 2 MapRoutes. Beachten Sie, dass ich hier der Route "Benutzerdefiniert" hinzugefügt habe, um sicherzustellen, dass die Routing-Engine zwischen dieser Route und Routen, die drei Parameter annehmen, unterscheiden kann und auf die Standard-ASP-MVC-Route wechseln sollte.

Ich habe auch Route1 vor Route2 platziert, also würde die Routing-Engine, wenn sie 2 Parameter sieht, diese Route über Route2 bevorzugen. Wenn Sie 3 Parameter angeben, wird die Route Route2 über Route1 oder die Standard-Route von mvc bevorzugen.

routes.MapRoute(
     //// Route name 
     "Route1", 
     //// URL with parameters 
     "Custom/{param2}/{param3}", 
     //// Parameter defaults 
     new { controller = "MyController", action = "MyActionName", param2 = string.Empty, param3 = string.Empty }); 


    routes.MapRoute(
     //// Route name 
     "Route2", 
     //// URL with parameters 
     "Custom/{param1}/{param2}/{param3}", 
     //// Parameter defaults 
     new { controller = "MyController", action = "MyActionName", param2 = string.Empty, param3 = string.Empty, param1 = string.Empty }); 
Verwandte Themen