2009-03-05 4 views
3

Я отмечаю этот интригующий немного в ASP.NET MVC:Как вы обрабатываете переменное количество маршрутов MVC?

routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

я хотел бы, чтобы отобразить {*} Pathinfo в маршрут.

Что-то вроде:

routes.MapRoute(
    "area/{*pathInfo}", 
    "{controller}/{action}/{id}",parameters 
    new { controller = "Area", action = "Index", id = ??? } 
); 

но как передать в переменной "Foo/бар/Rab/уф" от mydomain.com/area/foo/bar/rab/oof? Либо передача всего бита в виде строки, либо в виде коллекции будет в порядке со мной.

Спасибо!

ответ

4

Какую версию MVC вы используете? Имя маршрута должно быть первым параметром MapRoute(), как я помню в MCV Beta. Во всяком случае, учитывая вашу цель захватить путь, я бы с/т, как:

routes.MapRoute("AreaRoute", "Area/{*values}", new {controller = "Area", action = "Index"}  ); 

И в контроллере зоны:

// "value" argument is the string after Area/, i.e. "foo/bar/rab/oof" in your example 
public string Index(string values) 
{ 
    ... 
} 
+0

Спасибо за быстрый ответ. Я использую RC2. Я проверю это и вернусь к вам. –

+0

Как только я убедился, что этот шаблон был зарегистрирован ПЕРЕД шаблоном маршрута по умолчанию (готов к этому в другом месте, но полностью забыл об этом при попытке этого!), Ваше решение отлично работало. Большое спасибо. –

+0

Я рад, что это помогает. –