Routage ASP.NET MVC avec contrôleur par défaut

Pour un scénario, j'ai un ASP.NET application MVC avec des Url qui ressemble à la suivante:

http://example.com/Customer/List
http://example.com/Customer/List/Page/2
http://example.com/Customer/List
http://example.com/Customer/View/8372
http://example.com/Customer/Search/foo/Page/5

Ces Url sont obtenus avec les itinéraires suivants dans Global.asax.cs

routes.MapRoute(
    "CustomerSearch"
    , "Customer/Search/{query}/Page/{page}"
    , new { controller = "Customer", action = "Search" }
);

routes.MapRoute(
    "CustomerGeneric"
    , "Customer/{action}/{id}/Page/{page}"
    , new { controller = "Customer" }
);

//-- Default Route
routes.MapRoute(
    "Default",
    "{controller}/{action}/{id}",
    new { controller = "Customer", action = "Index", id = "" }
);

Tous ces bien passé jusqu'à ce qu'une nouvelle exigence est arrivé et veut déposer mot clé "Client" hors de l'URL, pour faire de l'Url ressemble:

http://example.com/List
http://example.com/List/Page/2
http://example.com/List
http://example.com/View/8372
http://example.com/Search/foo/Page/5

Edit: exemple corrigé les liens, grâce à @haacked.

J'ai essayé d'ajouter de nouveaux MapRoutes de prendre {action} et n'ont contrôleur par défaut définie pour le Client. eg/

routes.MapRoute(
    "CustomerFoo"
    , "{action}"
    , new { controller = "Customer", action = "Index" }
);

Cela semble fonctionner, mais maintenant tous les liens générés par Html.ActionLink() sont étranges et non plus de l'URL conviviale.

Alors, est-ce réalisable? Suis-je en approchant dans la bonne direction?

source d'informationauteur Trav L