C# ASP.NET MVC:RouteConfig默认操作
我是ASP.NET MVC的新手,在为实习制作制作项目之前,我正在学习一个在线教程来制作一个示例项目 在这个项目中,我们遵循基本的MVC框架,并创建两个不同的控制器。第一个控制器是默认的HomeController,它显示一个页面,无论url是否为:C# ASP.NET MVC:RouteConfig默认操作,c#,asp.net-mvc,model-view-controller,url-routing,asp.net-mvc-routing,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”
- example.com
- example.com/home
- example.com/home/index
defaults:
参数列出了controller=“home”、“action=“index”
但是,在创建我自己的控制器并使用与HomeController格式完全相同的routes.MapRoute
将路由映射到控制器后:
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上返回的同一页面?这是因为路由的顺序。
example.com/process
匹配您的第一个路由(“默认”),因此它会将操作“Index”作为默认值。您可以交换路由注册,然后它会选择“处理“路由与”列表“行动。阅读以进一步了解路由的工作原理请参阅路由取决于第一个匹配始终获胜的行为,因此为了使其工作,您必须限制路由只匹配它们所属的URL,并将它们按正确的顺序放置。Oops。事实证明,我的问题实际上存在于我的顺序优先级和一个隐藏的“”中,该“”使其成为我的默认控制器语句,这使得即使顺序优先级是正确的,打字错误也会使其不起作用。谢谢你的阅读,这很有帮助。我的问题实际上是一个打字错误,但你的阅读也帮助我修正了顺序优先顺序。非常感谢。