2012-02-28 128 views
0

我有這些路線:區域路線被忽略?

routes.MapRoute(
    "Advertisers", 
    "advertisers/{controller}/{action}/{id}", 
    new { controller = "Index", action = "Index", id = UrlParameter.Optional }, 
    new string[] { "Portal.Areas.Advertisers.Controllers" } 
); 

routes.MapRoute(
    "Root", // Route name 
    "{controller}/{action}/{id}", // URL with parameters 
    new { controller = "Index", action = "Index", id = UrlParameter.Optional }, // Parameter defaultsm 
    new string[] { "Portal.Controllers" } 
); 

然而,每當我去/廣告/控制器/操作/ ID它不讀取ID參數......我究竟做錯了什麼?

感謝

回答

1

我建議你看一看的Route Debugger

的NuGet安裝

PM>安裝,包裝routedebugger

後,你已經將它安裝到您的項目中,將這一行代碼放入您的應用程序中rt方法,並打到你正在調試的網址。

protected void Application_Start() 
{ 
    RouteDebug.RouteDebugger.RewriteRoutesForTesting(RouteTable.Routes); 
} 

這將告訴你到底爲什麼你的路線不按預期工作。

至於你的實際問題,你的Controller實際上是IndexController?因爲這似乎不是我的權利

public class IndexController : Controller 
{ 

    public ActionResult Index() 
    { 
     return View(); 
    } 

} 

我的假設是,你實際上有類似HomeControllerAdvertiserController,如果是那樣的話,你應該有這樣的事情

routes.MapRoute(
    "advertisers_default", // Route name 
    "advertisers/{controller}/{action}/{id}/{advertiserName}", // URL with parameters 
    new { controller = "Home", 
      action = "Index", 
      advertiserName = UrlParameter.Optional }, 
    new { id = "[0-9]+", 
      controller = "[a-zA-Z]+", 
      action = "[a-zA-Z]+" } 
); 

,然後打網址http://example.com/advertisers/ {ID}/{廣告客戶名稱}

簡單地說,這個網址看起來我錯了

/廣告/控制器/動作/ {ID}

應該
/廣告/家庭/(編號)

甚至
/廣告/家庭/ {ID}/{advertiser-name}

+0

感謝調試器很好,它似乎讓我做我需要做的事情。 – Darren 2012-02-29 17:23:31

+0

沒問題。這是確保MVC路線建設的最佳工具之一。 – 2012-02-29 18:44:36