ASP.NET MVC:RouteConfig 默认操作

ASP.NET MVC: RouteConfig default action

我是 ASP.NET MVC 的新手,在为实习构建生产项目之前,我正在按照在线教程构建示例项目。

在这个项目中,我们遵循基本的 MVC 脚手架,并创建了两个不同的控制器。第一个控制器是默认的 HomeController,显示页面是否 url 是:

我推断这是因为在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 });

新路由似乎只有在我指定示例时才有效。com/process/list,而不是默认示例。com/process/list 如果省略了“/list”。

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

这是因为你的路线顺序。 example.com/process 与您的第一条路线 ("Default") 相匹配,因此它默认采取操作 "Index"。您可以交换路由注册,然后它将选择 "Process" 路由和 "List" 操作。阅读 this article 以更深入地了解路由的工作原理