ASP.NET MVC页面/子页面路由

asp.net-mvc routing

3267 观看

3回复

135 作者的声誉

我试图弄清楚如何处理以下场景。一般来说,我在表中有一堆记录。所有这些都具有ID和ParentID字段以形成树。

Page1
 - Page2
 - Page3
Page4
 - Page5
 -- Page6

现在,我想我的第3页和第6页的路线是像/Page1/Page6/Page3/Page5/Page6respectivelly。也就是说,我想在URL中包含所有父项。

如何设置我的控制器动作/路由以实现上述结果?

编辑:忘了提到上面的结构是动态的 - 节点可以添加/删除/更改父节点等。

作者: ciscocert 的来源 发布者: 2009 年 1 月 4 日

回应 (3)


-2

5271 作者的声誉

你应该用

routes.MapRoute("Page6", "Page3/Page5/Page6", new { controller = "Page6", action = "Index" });

或者可能使用正则表达式路由

http://blog.sb2.fr/post/2009/01/03/Regular-Expression-MapRoute-With-ASPNET-MVC.aspx

作者: Yoann. B 发布者: 04.01.2009 02:31

4

3932 作者的声誉

决定

您可以使用通配符匹配。

可能的路线:

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

并在操作中接受字符串Page,并手动解析它,也许用拆分?

这可能也很有用:URL路由

作者: ccook 发布者: 04.01.2009 03:52

0

11985 作者的声誉

请注意,控制器名称和操作是固定的,而不是基于URL。

// 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
    }
}
作者: Todd Smith 发布者: 04.01.2009 04:28
32x32