Это правильная настройка маршрута MVC или есть другой способ? - PullRequest
1 голос
/ 15 января 2012

Я хочу зарезервировать корень моего веб-сайта для стандартных веб-форм и иметь страницы MVC в подкаталоге Views, поэтому у меня есть следующее ..

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

Однако, хотя это работает и япосмотрите несколько обходных путей, я не совсем рад, что RedirectToAction, кажется, направляет меня на неправильную страницу, например,

return RedirectToAction("Index", "Home");

Перенаправляет меня на http://localhost/Views, что дает мне ресурс не найден и индексдействие на HomeController не запускается.Есть ли лучший способ реализовать то, что я хочу здесь, или я упускаю что-то очевидное?

1 Ответ

0 голосов
/ 15 января 2012

Как вы знаете, Views является зарезервированным именем в ASP.NET MVC.Это существующий каталог.Вы можете установить RouteExistingFiles на true в определениях вашего маршрута:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.RouteExistingFiles = true;

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

    routes.MapRoute(
        "Default",
        "views/{controller}/{action}/{id}",
        new { controller = "home", action = "index", id = UrlParameter.Optional }
    );

}

Теперь при переходе к http://example.com/views или http://example.com/views/home или http://example.com/views/home/index это будет действие IndexHome контроллер, который будет выполнен.

...