Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET MVC:RouteConfig默认操作_C#_Asp.net Mvc_Model View Controller_Url Routing_Asp.net Mvc Routing - Fatal编程技术网

C# ASP.NET MVC:RouteConfig默认操作

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”

我是ASP.NET MVC的新手,在为实习制作制作项目之前,我正在学习一个在线教程来制作一个示例项目

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

  • example.com
  • example.com/home
  • example.com/home/index
我推断这是因为在RouteConfig文件中,
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。事实证明,我的问题实际上存在于我的顺序优先级和一个隐藏的“”中,该“”使其成为我的默认控制器语句,这使得即使顺序优先级是正确的,打字错误也会使其不起作用。谢谢你的阅读,这很有帮助。我的问题实际上是一个打字错误,但你的阅读也帮助我修正了顺序优先顺序。非常感谢。