Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.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
Asp.net mvc 何时使用默认路线值?_Asp.net Mvc_Asp.net Mvc Routing - Fatal编程技术网

Asp.net 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,否

我对默认路由值感到困惑。以下是MVC应用程序中的默认路线:

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的问题/评论吗?我仍然不知道这是怎么回事。