ASP.Net MVC支持嵌套资源吗?

12

我正在寻找一个类似于Rails提供的嵌套RESTful路由功能的路由选项。MvcContrib的SimplyRestful项目似乎不再活跃,也不符合最新的1.0 MVC版本。

这是我要找的URI模式,

/Activity/10/Task/1/Edit 或者 /Activity/10/Task/Edit/1

我只是一直没能让它工作,而且我遇到的所有文档都描述了非嵌套的情况。这似乎并不那么困难...

这就是我一直在使用的...

    routes.MapRoute(null,
        "Activity/{activityId}/Task/{action}/{id}", 
        new { controller = "Task", action = "Edit", activityId = "", id = "" });
1个回答

13

activity 添加一个默认值:

routes.MapRoute(null,
    "Activity/{activityId}/Task/{action}/{id}/{activity}",
    new { 
        controller = "Task", 
        action = "Edit", 
        id = "",
        activityId = "", 
        activity = "" });

还要记住,此路由仅接收形式为的网址

/Activity/10/Edit/1/theActivity

在你举的例子中

/Activity/10/Edit/1

将被默认路由拾取,设置路由值为

controller = "Activity"
action = "10"
id = "Edit/1"

Phil Haack的ASP.NET MVC路由调试器非常有用,可帮助您弄清楚如何使用这些东西...


谢谢。我刚刚意识到在发布之前不小心粘贴了它。 - nerraga
提到的路由调试器在我的阅读器上弹出了几次,我完全忘记了。谢谢! - nerraga

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接