我是ASP.NET MVC的新手,在我为实习构建一个生产项目之前,我将遵循一个在线教程来构建一个示例项目。
在这个项目中,我们遵循基本的MVC脚手架,并创建两个不同的控制器。第一个控制器是默认的HomeController,它显示一个页面,不管网址是:
我推断这是因为在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上返回的相同页面?
发布于 2018-06-29 14:32:04
这是因为你的路线的顺序。example.com/process与您的第一个路由(“默认”)匹配,因此它将操作"Index“作为默认值。您可以交换路由注册,然后它将选择“进程”路由与“列表”操作。阅读这篇文章以了解路由是如何工作的
https://stackoverflow.com/questions/51103965
复制相似问题