Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.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
C# ASP.NET webapi路由参数_C#_Asp.net_Asp.net Web Api - Fatal编程技术网

C# ASP.NET webapi路由参数

C# ASP.NET webapi路由参数,c#,asp.net,asp.net-web-api,C#,Asp.net,Asp.net Web Api,我正在尝试使用2个参数执行操作,1个是可选的 我正试着和你谈谈 [HttpGet, Route("movies/date/{dateMin}&{dateMax}")] 但它不起作用。 “dateMax”是可选参数,未指定时,它应与dateMin的值相同 已经试过了 [HttpGet, Route("movies/date/{dateMin}&{dateMax?}")] 但它也不起作用。 我不想要像这样的东西 {dateMin}/{dateMax} 还有其他的可能性吗?您

我正在尝试使用2个参数执行操作,1个是可选的 我正试着和你谈谈

 [HttpGet, Route("movies/date/{dateMin}&{dateMax}")]
但它不起作用。 “dateMax”是可选参数,未指定时,它应与dateMin的值相同 已经试过了

 [HttpGet, Route("movies/date/{dateMin}&{dateMax?}")]
但它也不起作用。 我不想要像这样的东西

{dateMin}/{dateMax}

还有其他的可能性吗?

您应该在RouteConfig.cs中这样做

 routes.MapRoute(
        name: "Movies",
        url: "{controller}/{action}/{dateMin}/{dateMax}",
        defaults: new { controller = "movies", action = "date", dateMax= UrlParameter.Optional }
        );
你的路线应该是这样的

"{controller}/{action}/{dateMin}/{dateMax}"

你应该在你的RouteConfig.cs中这样做

 routes.MapRoute(
        name: "Movies",
        url: "{controller}/{action}/{dateMin}/{dateMax}",
        defaults: new { controller = "movies", action = "date", dateMax= UrlParameter.Optional }
        );
你的路线应该是这样的

"{controller}/{action}/{dateMin}/{dateMax}"

您需要使用斜线分隔路由中的路由参数,而不是使用查询字符串表示法(
&


如果使用RoutAttribute,则无需更改路由配置。您需要使用斜线分隔路由中的路由参数,而不使用查询字符串表示法(
&


如果您使用RoutAttribute,则无需更改路由配置(非常感谢:)此外,我还有第二个问题。我有“[HttpGet,Route(“movies/{movieId:int?}/xx”)]”我想让它与“movies/2/xx”一起工作-只为movieId=2获得xx,而“movies/xx”获得所有xx-有可能吗?@Pawel-没有。如果使用位置参数,顺序是关键的,可选参数应该放在所需参数之前。最好使用查询字符串,并按名称绑定它们,而不是使它们基于位置。要做到这一点,从路由模板中完全省略它们,请将它们作为参数保留在方法中,使它们可以为null(为值类型添加?并指定默认值)。然后它们是可选的,您可以使用查询字符串参数包含一个值。非常感谢:)我还有第二个问题。我有“[HttpGet,Route(“movies/{movieId:int?}/xx”)]”我想让它与“movies/2/xx”一起工作-只为movieId=2获得xx,而“movies/xx”获得所有xx-有可能吗?@Pawel-没有。如果使用位置参数,顺序是关键的,可选参数应该放在所需参数之前。最好使用查询字符串,并按名称绑定它们,而不是使它们基于位置。要做到这一点,从路由模板中完全省略它们,请将它们作为参数保留在方法中,使它们可以为null(为值类型添加?并指定默认值)。然后它们是可选的,您可以使用查询字符串参数来包含值。