ASP.NET MVC:RouteConfig 默认操作
ASP.NET MVC: RouteConfig default action
我是 ASP.NET MVC 的新手,在为实习构建生产项目之前,我正在按照在线教程构建示例项目。
在这个项目中,我们遵循基本的 MVC 脚手架,并创建了两个不同的控制器。第一个控制器是默认的 HomeController,显示页面是否 url 是:
- example.com
- 示例。com/home
- 示例。com/home/索引
我推断这是因为在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 以更深入地了解路由的工作原理
我是 ASP.NET MVC 的新手,在为实习构建生产项目之前,我正在按照在线教程构建示例项目。
在这个项目中,我们遵循基本的 MVC 脚手架,并创建了两个不同的控制器。第一个控制器是默认的 HomeController,显示页面是否 url 是:
- example.com
- 示例。com/home
- 示例。com/home/索引
我推断这是因为在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 以更深入地了解路由的工作原理