2012-02-22 33 views
0

我的代碼很多ASP.NET的,但我是一種新的使用.NET MVC,我已經註冊這樣一個缺省路由有沒有一種方法,使基於特定路徑上的路由映射

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

我想在網站上添加另一個管理員區域,所有的URL都是類似於「http:// localhost/Administrator/controller1」,「http:// localhost/Administrator/controller2」等。管理員命名空間中的很多控制器,我試圖用一個MapRoute註冊這些控制器,我做了這樣的事情:

routes.MapRoute("Administrator_default", "Administrator/{controller}/{action}/{id}", new { controller = "Administrator", action = "Index", id = "" }); 

它的工作原理與控制器,但一個問題是,在一些其他的控制器,而我嘗試做一個重定向,如:

return RedirectToAction("Index", "Forum"); 

然後我將永遠被重定向到http://localhost/Administrator/Forum而不是http://localhost/Forum,這不是一個大問題,但使URL看起來很奇怪,我試圖限制到某些名稱空間,但它不起作用。它看起來就像我試圖註冊兩個默認路由,而.Net剛好匹配第一個,我想知道是否有一種方法可以使它成爲兩條默認路由並僅映射到特定路徑上?

+0

您是否正在管理員區中的控制器內執行RedirectToAction? – Mike 2012-02-22 18:00:46

+0

我在其他控制器中執行RedirectToAction,這裏的主要觀點是我沒有意識到有一個Areas函數,感謝您的幫助! – 2012-02-23 02:14:51

回答

0

與扎克的答案達成一致。

  1. 不理想,但你必須有在區域控制器中的根文件夾的項目(如/controllers/HomeController.cs)控制器以及控制器(也許高水平根頁面的選項顯示區域菜單)。

  2. 其次是使用RedirectToAction方法的快速提示。您可以使用路由參數指定您想要重定向的區域,例如:

    RedirectToAction(「Index」,「Form」,new {area =「MyOtherArea」});

相關問題