2009-01-04 168 views
5

我試圖弄清楚如何處理以下情形。一般來說,我有一堆表中的記錄。所有這些都有ID和ParentID字段來組成一棵樹。ASP.NET MVC頁面/子頁面路由

Page1 
- Page2 
- Page3 
Page4 
- Page5 
-- Page6 

現在,我想我的第3頁和第6頁的路線是像/Page1/Page6/Page3/Page5/Page6 respectivelly。也就是說,我想在URL中包含所有父母。

如何設置我的控制器動作/路由來實現上述結果?

編輯:忘了提,上述結構將是動態的 - 節點可以添加/刪除/修改父母等

+0

看看[這](http://stackoverflow.com/questions/296284/mvc-dynamic-routes)>> http://stackoverflow.com/questions/296284/mvc-dynamic-路線 – Mark79 2009-01-13 14:20:41

回答

3

你可以使用通配符,請參閱:http://www.vergentsoftware.com/blogs/ckinsman/ASPNETMVCWildcardRoutes.aspx

一種可能途徑:

routes.MapRoute("SomeName", "{*Page}", new { controller = "ControllerName", action = "ActionName" }); 

,並在行動接受字符串頁,手動解析它,也許有分流?

編輯:這也可能是有用的:http://weblogs.asp.net/scottgu/archive/2007/12/03/asp-net-mvc-framework-part-2-url-routing.aspx

+1

謝謝,幫了很多。節省了我的時間。 – 2016-09-21 14:15:02

0

注意控制器名稱和作用是固定的,而不是根據網址。

// place the more specific route first 
routes.MapRoute("r1", "{parent}/{child}/{subchild}", 
    new { controller = "Page", action = "Index", parent = parent, child = child, subchild = subchild }); 

routes.MapRoute("r2", "{parent}/{child}", 
    new { controller = "Page", action = "Index", parent = parent, child = child }); 


public class PageController 
{ 
    public ActionResult Index(string parent, string child, string? subchild) 
    { 
     // stuff 
    } 
}