2009-04-30 40 views
7

我的應用程序主要是一個ASP.NET應用程序,我向它添加了一個MVC部分。Default.aspx在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 = "" }); 
+0

你想打破MVC -View-Controller)規則?我認爲每個視圖必須包含在視圖文件夾下。 – 2009-04-30 04:40:17

+1

這是一個經典的asp.net應用程序。我想我現在可以稱之爲傳統應用程序;-)所以一切都保持不變。我剛剛開始添加MVC,並且默認頁面不是其中之一。 – Mouffette 2009-04-30 13:18:30

回答

7

如果你從你的第二個路線刪除默認的控制器在那裏,它不會對匹配「/」了和路由會忽略請求「/」 ,使他們對平時的ASP.Net管道來處理

因此,改變你的路線:

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

這應該解決您的問題!

0

你可以告訴MVC忽略Default.aspx的是這樣的:

routes.IgnoreRoute("Default.aspx"); 
1

Default.aspx頁面是由IIS提供服務,因爲它是默認的文檔。如果MVC 認識到請求是針對default.aspx(例如「http://foo.com/default.aspx」),則讓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 
      );