Routing 如何在ASP.NET Core 2中的单个控制器中匹配多个常规路由?

Routing 如何在ASP.NET Core 2中的单个控制器中匹配多个常规路由?,routing,asp.net-core-2.0,Routing,Asp.net Core 2.0,如果我的Startup.cs中有这些路由: app.UseMvc(routes => { routes.MapRoute( name: "default", template: "{controller=Home}/{action=Index}/{id?}"); }); app.UseMvc(routes

如果我的Startup.cs中有这些路由:

 app.UseMvc(routes =>
            {
                routes.MapRoute(
                    name: "default",
                    template: "{controller=Home}/{action=Index}/{id?}");
            });
            app.UseMvc(routes =>
            { 
                routes.MapRoute(
                        name: "default_search",
                        template: "{controller=Home}/{action=Index}/{searchString}"
                        );
            });
在我的控制器中,我有:

 public async Task<IActionResult> Search(string searchString)
        {...
公共异步任务搜索(字符串搜索字符串)
{...

公共异步任务详细信息(int?id)
{...

如何将这些与常规路由匹配?它查找搜索方法,但由于我的参数未命名为
id
,因此它无法获得
searchString
值,并且它没有使用具有
searchString
的第二条路由。如果我将控制器中的参数名称更改为
id
,则它会工作这是当我开始考虑属性路由的时候吗?< /P> < P>路由匹配发生在你映射的同一个顺序中。 首先在模板中首先定义特殊变量(如
Home/Search/{searchString}
之前所需的确切链接,并将其强制到特定的控制器和
默认值内的操作

然后在此之后使用常规模板:

app.UseMvc(routes =>
{
      routes.MapRoute(
          name: "default",
          template: "Home/About/{sa}",
          defaults: new { controller = "Home", action = "About" });

      routes.MapRoute(
          name: "default_search",
          template: "{controller=Home}/{action=Index}/{id?}");
      });
}

然后我会遇到相反的问题。我也需要id。你如何区分id 127的详细信息的url(也将是/127)和searchstring 127(也将是/127)-如果你想要另一个映射,请告诉我-但是如果是这种情况,因为所需url没有差异,你无法让任何程序区分它们变量的名称。yo你需要给出你尝试过的两个URL,因为在中,如果你提到了变量名,那么它应该可以工作-如果你的控制器在家,那么/Home/Details?id=5将执行Details并传递id值5和/Home/Search?searchstring=7将执行搜索操作并传递7作为searshstring。在没有的地方你怎么做?somevar=x?我想要co控制器/索引/值
app.UseMvc(routes =>
{
      routes.MapRoute(
          name: "default",
          template: "Home/About/{sa}",
          defaults: new { controller = "Home", action = "About" });

      routes.MapRoute(
          name: "default_search",
          template: "{controller=Home}/{action=Index}/{id?}");
      });
}