父子关系的MVC路由

时间:2009-12-27 04:55:35

标签: asp.net-mvc asp.net-mvc-routing

我正在构建一个APS.net MVC 2应用程序,我有一个父表和一个子表。

我已经为父表构建了控制器,视图和模型,因此我可以从父表中添加,编辑,查看详细信息和检测记录。

我使用以下路由来执行此操作:

routes.MapRoute(
                "Default",                                              // Route name
                "{controller}/{action}/{id}",                           // URL with parameters
                new { controller = "Parent", action = "List", id = "" }  // Parameter defaults

此设置允许我在我的应用中使用以下网址:

  

列出所有父记录:   / Parent / List
查看详细信息   特定的父记录:   /家长/细节/< ID>
编辑一个   特定父记录:   /家长/编辑/< ID>

现在,每个父记录都有一个子表。这是什么标准路线?

  

列出a的应用子记录   特定父母:   父/< ID> /子/列表
查看   特定儿童记录的详细信息:   子/细节/< ID>
编辑一个   特定儿童记录:儿童/编辑/< ID>   

看起来不错吗?我将如何设置MapRoute?

1 个答案:

答案 0 :(得分:4)

对于列表中的第2和第3项,您当前的路线将没有问题,即如果您有子控制器。

To list app child records for a specific parent: Parent/< ID>/Child/List 
To view details for a specific child record: Child/Details/< ID> 
To edit a specific child record: Child/Edit/< ID>

对于第一项,只需创建一条新路线

routes.MapRoute(
 "ParentWithChild", 
 "{parent}/{id}/Child/List", 
 new { controller = "Child", action = "ChildList", id = "", parent=""} 

我假设您要使用控制器子项,并将创建一个名为ChildList

的新操作方法

签名就像这样

public ActionResult ChildList(string parent, string id)

如果“父母”是父母而不是姓名,则快速指向路线

 "Parent/{id}/Child/List",

和签名将是

public ActionResult ChildList(string id)