2011-09-28 60 views
5

我有一個全新的asp.net mvc 3項目。我沒有以任何方式修改路線。我有一個叫做PageController的控制器,另一個控制器叫ContentController爲什麼在ASP.NET MVC 3中,默認路由對於名爲「ContentController」的控制器不起作用?

當我瀏覽到domain.com/Page時,頁面控制器上的Index操作按預期執行並顯示Index視圖。

當我瀏覽到domain.com/Content時,我得到一個404錯誤。如果我瀏覽到domain.com/Content/Index,那麼它工作正常。

如何解決此單一路線問題?

public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

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

我嘗試添加一個額外的路線:

public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

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

    } 

但額外的路徑沒有改變應用程序的行爲。

這可能是什麼原因造成的?

+0

只是爲了澄清,你可以添加代碼爲'ContentController' –

+0

@MatthewAbbott - 這是通過腳手架全部產生。通過實施Nathan的答案,我能夠解決這個問題。 – quakkels

回答

11

它因爲有一個稱爲內容的物理文件夾。擁有與物理文件夾同名的控制器可能會對您的網站產生一些不利影響。

+0

呃......這很有道理。我會嘗試重命名控制器。 – quakkels

+0

謝謝......這麼簡單。 – quakkels

+0

剛剛碰到這個後撞我的頭靠在牆上進行升技,謝謝你的回答! – Wil

0

嘗試添加下列到你的路由定義:

routes.RouteExistingFiles = true; 
+0

他不會爲他的實際內容文件設置路由或忽略路由嗎? –

+0

我敢打賭,這將工作。但是,我認爲根本問題由@nathangonzalez概述。 – quakkels

相關問題