Konfigurowanie routingu ASP.Net MVC 4 z niestandardowymi zmiennymi segmentu

Właśnie zacząłem pracować nad aplikacją z kilkoma obszarami (podstawowy system typu master / szczegóły siatki). Rozglądam się za korzystaniem z ładnych funkcji routingu w MVC (w szczególności 4) i „po prostu nie dostaję” Zakładam.

Obecnie jedyną zdefiniowaną trasą jest trasa podstawowa:

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

co jest w porządku, działa z obszarami, które zdefiniowaliśmy, więc zakładam, że musi wiedzieć, gdzie jest użytkownik i przejść do odpowiedniego kontrolera opartego kontekstowo na lokalizacji / obszarze, w którym użytkownik jest .. do tej pory miło ..

Teraz próbuję ustawić nową trasę, która może obsłużyć

/someController/someAction/{statusName} 

a konkretnie coś takiego:

/OrderManager/List/New 

I

/OrderManager/List/Viewed

gdzie „Nowy” to stan „Nowy” i ma podpis Podpis działania:

public ActionResult List(string statusName)

zakładałem, że mogę po prostu dodać nową trasę poniżej domyślnej, identyfikując „statusName” zamiast Id, ale oczywiście, jak H miałby mechanizm routingu znać różnicę między:

/ controller1 / action1 / 15

/ controller2 / action2 / new

Próbowałem dodać „statyczną” trasę w postaci

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

Pomyślałem, że mogę „hiJack” tylko tę jedną trasę i zrobić z nią coś specjalnego, ale żeby się upewnić, router zatrzymuje się na pierwszym meczu? Zakładam, że i tak był to zły sposób na rozwiązanie tego problemu ..

więc teraz przechodzę przez pomysł dotarcia do czegoś takiego:

/somecustomroutename/somesortValue

dawny. / OrderManagerList / viewNew

gdzie te trasy byłyby w zasadzie „aliasami”. Pomyślałem, że dodanie następującej trasy może załatwić sprawę:

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

z powiązaną akcją na kontrolerze OrderManager:

public ActionResult List(string statusName)

bez względu na to, co spróbuję, argument jest pusty lub „nie można znaleźć zasobu”

Wiem, że kontrolery muszą mieć odpowiedni plik View .. ale to nie jest problem tutaj, problemem jest moja próba zrozumienia routingu ..

Wiec moje pytania .. zasadniczo, czego brakuje mi w routingu w MVC (4)? nawet dobre artykuły dla prostaka, jak ja, aby zrozumieć?

moje zrozumienie; zdefiniuj trasę i zmapuj jej „punkt końcowy” .. jednak myślę, że nie rozumiem założeń, że maszyna tworzy ..

w każdym razie daj mi znać, jeśli wymagane jest dalsze wyjaśnienie / edycja.

z góry dziękuję.

questionAnswers(1)

yourAnswerToTheQuestion