Asp.net mvc 何时使用默认路线值?
我对默认路由值感到困惑。以下是MVC应用程序中的默认路线:Asp.net mvc 何时使用默认路线值?,asp.net-mvc,asp.net-mvc-routing,Asp.net Mvc,Asp.net Mvc Routing,我对默认路由值感到困惑。以下是MVC应用程序中的默认路线: routes.MapRoute( "Default", "{controller}/{action}/{id}", new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); 我不明白为什么它会为{controller}指定一个默认值,因为在我看来,除非用户请求像/xyz/dosomething/123这样的url,否
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
我不明白为什么它会为{controller}指定一个默认值,因为在我看来,除非用户请求像/xyz/dosomething/123
这样的url,否则这个路由永远不会被使用,在这种情况下,控制器就是xyz
,我们不需要默认值
因此,对于这样的路由,何时会使用默认控制器和操作值?当请求页面
/
时,即当有人浏览到您的域地址时,将使用默认控制器和操作,例如,http://www.mydomain.com
当请求页面/
时,即当有人浏览到您的域地址时,将使用默认控制器和操作,例如,http://www.mydomain.com
如果您不在url中指定它们,则将使用它:http://whatever.com
将被视为http://whatever.com/Home/Index
如果您不在url中指定它们,则将使用它:http://whatever.com
将被视为http://whatever.com/Home/Index
我认为像{controller}/{action}/{id}这样的路由必须匹配/something/something/something。但您的意思是,如果指定默认值,它可以匹配/something/something或just/something,甚至just/。如果省略默认值,它是否必须与确切的模式匹配?确实,提交http://whatever.com/Other
将在OtherController
中搜索索引
操作。但是模式必须匹配,例如,除非更改/添加路由,否则不能在控制器名称之前写入操作名称。假设模式为{controller}/{action}
。如果指定了默认操作,那么路由将匹配/abc/xyz
和/abc
,但如果没有指定默认操作,则仅匹配/abc/xyz
(完整路由)是否正确?这是正确的,它就是这样工作的。另外,如果您的操作有未指定的参数(如默认路由中的id
),则必须将它们添加到URLOK,我现在理解得更好了。非常感谢你的帮助。最后一个问题:在id
的情况下,假设您指定了一个默认值,但默认值是UrlParameter。可选的?然后它会匹配/abc/xyz
和/abc/xyz/123
还是只匹配/abc/xyz
?我认为像{controller}/{action}/{id}这样的路由必须匹配/something/something/something。但您的意思是,如果指定默认值,它可以匹配/something/something或just/something,甚至just/。如果省略默认值,它是否必须与确切的模式匹配?确实,提交http://whatever.com/Other
将在OtherController
中搜索索引
操作。但是模式必须匹配,例如,除非更改/添加路由,否则不能在控制器名称之前写入操作名称。假设模式为{controller}/{action}
。如果指定了默认操作,那么路由将匹配/abc/xyz
和/abc
,但如果没有指定默认操作,则仅匹配/abc/xyz
(完整路由)是否正确?这是正确的,它就是这样工作的。另外,如果您的操作有未指定的参数(如默认路由中的id
),则必须将它们添加到URLOK,我现在理解得更好了。非常感谢你的帮助。最后一个问题:在id
的情况下,假设您指定了一个默认值,但默认值是UrlParameter。可选的?那么它会匹配/abc/xyz
和/abc/xyz/123
还是只匹配/abc/xyz
?你能看到我对@Réda Mattar的问题/评论吗?我仍然不知道这是怎么回事。你能看到我对@Réda Mattar的问题/评论吗?我仍然不知道这是怎么回事。