Могу ли я иметь страницу default.aspx на сайте MVC?

У меня есть устаревший сайт WebForms со страницей Default.aspx, настроенной в IIS как страница по умолчанию. Поэтому, когда кто-то переходит на mysite.com, он видит mysite.com/Default.aspx, но в адресной строке отображается только mysite.com.

Я добавил MVC на сайт, и хочу постепенно перенести функционал на MVC. Все работает, но это сломало корневую страницу: переход к маршруту вызвал ошибку 404, потому что маршрут по умолчанию совпадал с корнем и пытался направить контроллер Home, но его не было. Поэтому я добавил тот, который делает это:

' GET: /Home
Function Index() As ActionResult
    'jump to the go page
    Return Redirect("/default.aspx")
End Function

Теперь это работает, за исключением того, что при переходе к маршруту в адресной строке отображается mysite.com/Default.aspx.

Я хотел бы это, если либо:

  • Я НЕ мог сопоставить корневой маршрут и позволить странице WebForms Default.aspx обрабатывать его, как раньше.
  • Я мог бы роутить так, как делаю сейчас, но сделать так, чтобы страница Default.aspx не отображалась в адресной строке.

Возможны ли какие-либо из них?


person Joshua Frank    schedule 17.01.2014    source источник


Ответы (1)


Это возможно.

В конфигурации маршрута удалите контроллер в параметре defaults. Из этого:

routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

К этому:

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

Затем добавьте Default.aspx в корень вашего проекта.

person LostInComputer    schedule 19.01.2014
comment
Работал отлично. Спасибо! - person Joshua Frank; 20.01.2014