ASP.NET MVC:RouteConfig默认操作

时间:2018-06-29 14:28:18

标签: c# asp.net-mvc model-view-controller url-routing asp.net-mvc-routing

我是ASP.NET MVC的新手,并且正在遵循在线教程来构建示例项目,然后再为实习生建立生产项目。

在此项目中,我们遵循基本的MVC支架,并创建两个不同的控制器。第一个控制器是默认的HomeController,它将显示一个页面,无论URL是否为:

  • example.com
  • example.com/home
  • example.com/home/index

我推断这是因为在RouteConfig文件中,defaults:参数列出了controller="home", "action="index"

但是,在创建自己的控制器并使用routes.MapRoute以与HomeController完全相同的格式映射到它的路由之后:

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional });

        routes.MapRoute(
            name: "Process",
            url: "Process/{action}/{id}",
            defaults: new { controller = "Process", action = "List", id = UrlParameter.Optional });

仅当我指定example.com/process/list时,新路由才似乎有效,而如果省略了“ / list”,则默认为example.com/process/list。

普通的HomeController模板中是否有一些特殊的东西,它们定义了通过不同的URL返回的同一页面?

1 个答案:

答案 0 :(得分:0)

发生这种情况的原因是您的路线顺序。 example.com/process与您的第一个路线匹配(“默认”),因此默认情况下它将获得操作“索引”。您可以交换路由注册,然后它将通过“列表”操作选择“处理”路由。阅读this article,以了解路由的工作原理