我想保留我的网站的根目录以用于标准的webforms并将MVC页面放在子目录中,以便我有以下内容..
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上的Index操作没有触发。有没有更好的方法来实现我想要的东西,或者我错过了一些明显的东西?
答案 0 :(得分:0)
如您所知,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
时,Index
控件的Home
操作将被执行。