我是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 });
仅当我指定example.com/process/list时,新路由才似乎有效,而如果省略了“ / list”,则默认为example.com/process/list。
普通的HomeController模板中是否有一些特殊的东西,它们定义了通过不同的URL返回的同一页面?
答案 0 :(得分:0)
发生这种情况的原因是您的路线顺序。 example.com/process
与您的第一个路线匹配(“默认”),因此默认情况下它将获得操作“索引”。您可以交换路由注册,然后它将通过“列表”操作选择“处理”路由。阅读this article,以了解路由的工作原理