2009-07-11 1 views
1

Как настроить маршрутизацию для обработки http://mysite.com/Foo?Как обрабатывать пустой URL-адрес в ASP.NET MVC

Где foo может быть любой ценностью. Я хочу, чтобы он перешел в/Home/Action/Id, где foo - id.

Эти отображения я пытался:

 routes.MapRoute("Catchall", "{*catchall}", 
      new { controller = "Home", action = "Index", id=""}); 

     routes.MapRoute("ByKey", "{id}", 
      new { controller = "Home", action = "Index" id=""}); 

Они оба сгенерирован 404.

Спасибо за любую помощь.

ответ

1

Ваш второй маршрут правильный. Он должен работать. Может быть, у вас есть еще один маршрут? Отладить ваши маршруты с Phil Haack's ASP.NET Routing Debugger

+0

Я считаю, что тесты модулей делают трюк лучше. Вы пробовали тестовые помощники MvcContrib? :) –

+0

Что-то вроде '' ~/foo ".Route(). ShouldMapTo (x => x.Index (" foo "));' будет интересно. Вы также должны отправить ответ –

+0

Но я не понимаю, как это помогает Дэвиду, если этот тест не удастся? –

3

Попробуйте (обратите внимание, у вас недостающая запятая в исходном сообщении):

routes.MapRoute("ByKey", "{id}", 
    new { controller = "Home", action = "Index", id=""}); 

Я бы, однако, сделать его немного более описательным, чтобы предотвратить столкновения позже, даже если он означает бит более длинные URI:

routes.MapRoute("ByKey", "ByKey/{id}", 
    new { controller = "Home", action = "Index", id=""}); 

И поместите это как первую команду MapRoute. Заказ имеет значение там, и первый маршрут, который вы добавляете, является первым маршрутом для URL-адреса, который должен быть протестирован.

Смежные вопросы