2012-03-08 31 views
0

我有一個心理路徑:Home/signUp.aspxMVC路由含糊

Controller/HomeController.cs (related to Views/home/index.aspx)

我的路由是在Global.asax配置:

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

    //settings - manage toolbars 
     routes.MapRoute("SettingsManageToolbars", "home/{action}/{id}", 
      new { controller = "Home", action = "Index", id = UrlParameter.Optional }); 

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

當我衝浪home\signup.aspx 我得到一個文本帶「目錄內容」的頁面

我該如何解決此路由問題?

+1

在MVC中,你一般不再使用你的路「的.aspx」 - 路由有沒有把一個網址到控制器和行動的號召;然後將調用一個視圖 - 這是.aspx或.ascx或其他。我不確定你是否完全理解MVC的目的。我也不確定我是否真的明白你的問題。 – 2012-03-08 10:24:18

+0

刪除routes.IgnoreRoute(「{resource} .aspx/{* pathInfo}」); – Lloyd 2012-03-08 10:24:27

+0

@Lloyd爲什麼會有幫助? – 2012-03-08 10:28:30

回答

0

默認情況下,路由不處理映射到Web服務器上現有的物理文件的請求。即使路由匹配定義的模式(如{controller}/{action}/{id}),路由也不處理該請求。

如果你想路由來處理所有的請求,甚至指向文件的請求,您可以通過RouteCollection對象的屬性設置RouteExistingFiles爲true覆蓋默認行爲。當您將此值設置爲true時,所有匹配定義模式的請求都將通過路由處理。

http://msdn.microsoft.com/en-us/library/cc668201.aspx#scenarios_when_routing_is_not_applied

+0

那我爲什麼要到'目錄內容「頁面? – 2012-03-08 12:04:45

0

爲什麼你的家庭控制器是一個aspx文件?嘗試使它成爲HomeController.cs!

我建議您刪除目前的控制器,並通過上下文菜單中添加另一個(點擊右鍵,添加)

+0

它的cs文件。我的錯。 – 2012-03-08 10:27:58