Einrichten von ASP.Net MVC 4-Routing mit benutzerdefinierten Segmentvariablen

Ich habe gerade angefangen, an einer Anwendung mit einigen Bereichen zu arbeiten (grundlegendes Grid-Master- / Detail-Typ-System). Ich möchte die Vorteile der netten Routing-Funktionen in MVC (speziell 4) nutzen und "verstehe es einfach nicht". Ich nehme an.

Derzeit ist nur die grundlegende Route definiert:

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

Das ist in Ordnung, es funktioniert mit den von uns definierten Bereichen, also gehe ich davon aus, dass es wissen muss, wo sich der Benutzer befindet, und basierend auf dem Standort / Bereich, in dem sich der Benutzer befindet, die Route zum entsprechenden Controller.

Jetzt versuche ich, eine neue Route einzurichten, die damit umgehen kann

/someController/someAction/{statusName} 

und speziell so etwas wie:

/OrderManager/List/New 

UND

/OrderManager/List/Viewed

Dabei ist "Neu" der Status "Neu" und die Aktionssignatur sieht folgendermaßen aus:

public ActionResult List(string statusName)

Ich ging davon aus, dass ich nur die neue Route unter der Standardroute hinzufügen könnte, die "statusName" anstelle von "Id" identifiziert, aber natürlich, wie das H den Unterschied zwischen dem Routing-Mechanismus erkennen würde:

/ controller1 / action1 / 15

/ controller2 / action2 / new

Ich habe versucht, eine "statische" Route in Form von hinzuzufügen

routes.MapRoute("Default", 
            "ControllerName/ControllerAction/{statusName}", 
            new { statusName = UrlParameter.Optional }
        );

Ich dachte, ich könnte nur diese eine Route "hiJack" und etwas Besonderes damit machen, aber um es zu wissen, stoppt der Router beim ersten Spiel? Ich gehe davon aus, dass dies sowieso der falsche Weg war, um dieses Problem anzugehen.

So, jetzt gehe ich die Idee durch, zu etwas zu kommen, wie:

/somecustomroutename/somesortValue

Ex. / OrderManagerList / viewNew

wo diese Routen im Grunde "Aliase" sein würden. Ich hatte gedacht, dass das Hinzufügen der folgenden Route den Trick machen würde:

 routes.MapRoute("Default_List",
          "OrderManagerList/{statusName}",
          new {controller="OrderManager", action="List", statusName= UrlParameter.Optional }
      );

mit der zugehörigen Aktion auf dem OrderManager-Controller:

public ActionResult List(string statusName)

egal was ich versuche, das Argument ist null oder die "Ressource kann nicht gefunden werden"

Ich weiß, dass die Controller eine entsprechende View-Datei benötigen, aber das ist hier nicht das Problem. Das Problem ist mein Versuch, das Routing zu verstehen.

Also meine Fragen .. grundsätzlich, was fehle ich über das Routing in MVC (4)? Auch ein paar gute Artikel für einen simpleton wie mich zu verstehen?

mein Verständnis; Definieren Sie eine Route und kartieren Sie sie als "Endpunkt". Ich glaube jedoch, ich verstehe die Annahmen, die die Maschine macht, nicht.

Wie auch immer, lass es mich wissen, wenn weitere Erklärungen / Änderungen erforderlich sind.

Danke im Voraus.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage