Asp.net core ASP.NET核心MVC映射路由默认值
我有以下MapRoute定义: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
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。可选部分必须按顺序排列,系统无法猜出您遗漏了哪个部分以及提交了哪个部分。对不起,我是个傻瓜。写下来作为回答,我会接受的。顺便说一句,我认为如果找不到控制器,那么最好在默认控制器中找到一个操作。也许我应该写一个自定义路由器:)