Default.aspx没有在带有MVC部分的ASP.NET项目中执行

时间:2009-04-30 03:54:15

标签: asp.net-mvc

我的应用程序主要是一个ASP.NET应用程序,我正在添加一个MVC部分。

我的Default.aspx(没有代码隐藏)页面有一个简单的Response.Redirect到一个StartPage.aspx页面但由于某种原因MVC接管并且我没有进入StartPage.aspx页面。相反,我被路由到我的第一个也是唯一的MVC部分,这是我在global.asax.cs页面(专辑)中注册的注册路线。

有没有办法告诉MVC将我的请求留给根“/”作为我的IIS 7默认文档...在这种情况下Default.aspx?

这就是我的RegisterRoutes:

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute("Albums","{controller}/{action}/{id}",
    new { controller = "Albums", action = "Index", id = "" });

3 个答案:

答案 0 :(得分:7)

如果从那里的第二条路线中删除默认控制器,它将不再与“/”匹配,路由将忽略对“/”的请求,将它们留给通常的ASP.Net管道来处理

因此,请将您的路线更改为:

routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
routes.MapRoute("Albums","{controller}/{action}/{id}",
     new { action = "Index", id = "" });

那应该可以解决你的问题!

答案 1 :(得分:1)

IIS正在提供default.aspx页面,因为它是默认文档。 MVC会 让default.aspx页面处理请求,如果它意识到请求是针对default.aspx的(例如“http://foo.com/default.aspx”)。虽然在这种情况下(“http://foo.com”)它没有重新定义,所以你可以在默认路由之前添加它以实现你的目标

// ignore "/"    
routes.IgnoreRoute("");

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

答案 2 :(得分:0)

您可以告诉MVC忽略Default.aspx,如下所示:

routes.IgnoreRoute("Default.aspx");