Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/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 core ASP.NET核心MVC映射路由默认值_Asp.net Core_Asp.net Core Mvc_Asp.net Mvc Routing - Fatal编程技术网

Asp.net core ASP.NET核心MVC映射路由默认值

Asp.net core ASP.NET核心MVC映射路由默认值,asp.net-core,asp.net-core-mvc,asp.net-mvc-routing,Asp.net Core,Asp.net Core Mvc,Asp.net Mvc Routing,我有以下MapRoute定义: routes.MapRoute("default", "{controller=Home}/{action=Index}/{id?}"); 正如您所看到的,这与官方默认设置完全相同。文档中对默认设置进行了解释: public String Test() { return "Route found"; } 默认和可选路由参数不需要出现在 匹配的URL路径 因此,我在HomeController中创建了一个非常简单的附加操作来测试默认值的行为: publi

我有以下MapRoute定义:

routes.MapRoute("default", "{controller=Home}/{action=Index}/{id?}");
正如您所看到的,这与官方默认设置完全相同。文档中对默认设置进行了解释:

public String Test()
{
    return "Route found";
}
默认和可选路由参数不需要出现在 匹配的URL路径

因此,我在HomeController中创建了一个非常简单的附加操作来测试默认值的行为:

public String Test()
{
    return "Route found";
}
现在我试图理解为什么这个url不起作用:'/Test'

如果我设置了默认控制器值(=Home),那么如果在默认控制器中定义了操作,则路由器将找到该操作

我还想知道这两种声明格式之间是否有任何区别:

routes.MapRoute("default", "{controller=Home}/{action=Index}/{id?}");
routes.MapRoute("default", "{controller}/{action}/{id?}", new { controller = "Home", action = "Index" });

因为第一部分是控制器,而您没有TestController。可选部分必须按顺序排列,系统无法猜出您遗漏了哪个部分以及提交了哪个部分。对不起,我是个傻瓜。写下来作为回答,我会接受的。顺便说一句,我认为如果找不到控制器,那么最好在默认控制器中找到一个操作。也许我应该编写一个自定义路由器:),因为第一部分是控制器,而您没有TestController。可选部分必须按顺序排列,系统无法猜出您遗漏了哪个部分以及提交了哪个部分。对不起,我是个傻瓜。写下来作为回答,我会接受的。顺便说一句,我认为如果找不到控制器,那么最好在默认控制器中找到一个操作。也许我应该写一个自定义路由器:)