Asp.net mvc 3 如何在ASP.NETMVC中创建具有相同控制器方法的自定义URL

Asp.net mvc 3 如何在ASP.NETMVC中创建具有相同控制器方法的自定义URL,asp.net-mvc-3,url-routing,Asp.net Mvc 3,Url Routing,我有这些课程 Secion Repository Section Application Section Controller Group Repository Group Application Group Controller Class Repository Class Application Class Controller 我所有的控制器都有一个名为“显示”的视图 以及这些实体的结构。 现在的问题是: 我想在我进入类时看到控制器 Class/Show/class's group's

我有这些课程

Secion Repository
Section Application
Section Controller
Group Repository
Group Application
Group Controller
Class Repository
Class Application
Class Controller
我所有的控制器都有一个名为“显示”的视图 以及这些实体的结构。

现在的问题是: 我想在我进入
类时看到
控制器

Class/Show/class's group's section name/class's group name/class's name
Group/Show/group's section name/group name
而不是

Class/Show/1
Group/Show/1
或者,当我转到组控制器时,我看到

Class/Show/class's group's section name/class's group name/class's name
Group/Show/group's section name/group name
而不是

Class/Show/1
Group/Show/1

如何定义?

您可以定义以下路线:

routes.MapRoute(
    "ShowRoute",
    "{controller}/show/{groupsection}/{groupname}/{classname}",
    new { controller = "class", action = "show", classname= UrlParameter.Optional },                
);
需要注意的几点:

  • 您可以选择任何控制器作为默认控制器(例如controller=“the_default”)
  • 您可以将所有参数声明为可选参数,但需要注意代码中的null arg值
  • 然后,您可以这样定义控制器方法:

    public ActionResult Show(string groupsection, string groupname, string classname) {    
    }
    
    然后有以下要求:

    http://your_domain/class/group1-section5/group1/class-obedient
    
    http://your_domain/group/group1-section5/group1/