asp.net – 如何使用Web API属性路由传递DateTime参数?

我正在使用ASP.NET Web API 2开发REST API.
当我尝试将日期整合到游戏中时会变坏.

这是路线:

[Route("{id:Guid}/{from:DateTime}/{to:DateTime}")]

当我这样做时,我可以完美地传递类似的东西

.../[id]/2012-01-01/2013-01-01

然而,当我到达需要时间信息的地步时,它变得非常糟糕,让我们想象一下:

.../[id]/2012-01-01/2013-01-01 1:45:30 PM/2013-01-01 1:45:30 PM

似乎空间正常,但“:”正在阻塞.所以我虽然应该使用我自己的格式,因为yyyyMMddhhmm.这给出了以下URL:

.../[id]/201301031147/201401031147

但是,.NET并不期望这是一个DateTime,也不知道如何使用它.所以我使用IHttpRouteConstraint来允许它.
问题是,在我告诉它没关系后,它仍然不知道如何处理它…

所以我的问题是,你如何将DateTime传递给路线?

解决方法

问题是:路径中是URL保留字符. MVC不期望它是URL编码的,也不会处理它.但是,它不在查询字符串中保留.

从路由规范中删除它,但将它们作为参数保留在方法中,模型绑定器将绑定它们.或者,您也可以将它们作为参数删除,并通过Context查询字符串属性或ControllerContext.Request.GetQueryNameValuePairs()访问它们.

你会有吗?fromDate = 2012-01-01T1:45:30 PM& toDate = 2013-01-01T1:45:30PM

相关文章

引言 本文从Linux小白的视角, 在CentOS 7.x服务器上搭建一个...
引言: 多线程编程/异步编程非常复杂,有很多概念和工具需要...
一. 宏观概念 ASP.NET Core Middleware是在应用程序处理管道...
背景 在.Net和C#中运行异步代码相当简单,因为我们有时候需要...
HTTP基本认证 在HTTP中,HTTP基本认证(Basic Authenticatio...
1.Linq 执行多列排序 OrderBy的意义是按照指定顺序排序,连续...