如何在ASP.Net MVC中使用相同的控制器方法制作自定义URL

时间:2013-04-17 07:32:13

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

我有这些课程。

Secion Repository
Section Application
Section Controller
Group Repository
Group Application
Group Controller
Class Repository
Class Application
Class Controller

我的所有控制器都有一个名为Show的视图 而这些结构的实体。 enter image description here

现在的问题是: 我希望当我去Class控制器时看到

Class/Show/class's group's section name/class's group name/class's name

而不是

Class/Show/1

或当我去集团控制器时,我看到了

Group/Show/group's section name/group name

而不是

Group/Show/1

如何?

1 个答案:

答案 0 :(得分:1)

您可以定义以下路线:

routes.MapRoute(
    "ShowRoute",
    "{controller}/show/{groupsection}/{groupname}/{classname}",
    new { controller = "class", action = "show", classname= UrlParameter.Optional },                
);

有几点需要注意:

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

    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/