2010-11-29 3 views
1

Если я хочу ударить по URL-адресу http://localhost:8080/controllername Я хочу, чтобы действие «Индекс» называлось действием по умолчанию. Я предположил, что сопоставление маршрутов по умолчанию будет прекрасным, и действие «Индекс» будет вызываться на любом контроллере. Мне нужно указать http://localhost:8080/controllername/indexЗадача по умолчанию по маршруту

Это правильно?

Mapping:

routes.MapRoute(
      "Default", // Route name 
      "{controller}/{action}/{id}", // URL with parameters 
      new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults 
     ); 
+0

Можем ли мы видеть ваши другие маршруты? Возможно, другие первоочередны? – spender 2010-11-29 10:21:07

ответ

0

Что вы пытаетесь определенно должны работать. Фактически, вы отправили код по умолчанию из шаблонов по умолчанию, и я только что протестировал его, добавив действие «Индекс» к AccountController и посетив/Учетную запись в моем браузере.

Я бы рекомендовал создать новый проект и протестировать это поведение (сначала со встроенным веб-сервером, а затем с IIS, если вы не всегда используете встроенный сервер). Если он работает, в вашем проекте, вероятно, что-то другое, что вызывает проблему.

0

У меня была аналогичная проблема, и она произошла из-за столкновения с каталогом в проекте. Я имел структуру, как это в моем проекте:

Controllers \ 
      HomeController.cs 
      CmsController.cs 
Cms \ 
    WhateverFile.cs 

Cms Поддиректория столкнулся с /Cms URL, в то время как Cms/Index работал. Я просто переименовал имя вызывающей папки. Если вам нужно его сохранить, есть RouteCollection.RouteExistingFiles, который может использоваться для предотвращения автоматического поиска файлов. Если это разрешено, я думаю, что для скрипта нужно добавить много исключений, см., Например, this blog post.

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