我想看看我是否需要寫一個自定義IHttpRouteConstraint
或如果我可以與內置的摔跤得到我想要的是。我無法在任何地方找到任何有用的文檔。創建一個路徑,可以接受一個日期時間的URI與asp.net web api 2屬性路由
基本上,這是我的行動:
[Route("var/{varId:int:min(1)}/slot/{*slot:datetime}")]
public async Task<HttpResponseMessage> Put(int varId, DateTime slot)
{
...
}
我要的是能夠調用它是這樣的: PUT /api/data/var/1/slot/2012/01/01/131516
,並有框架綁定19 VAR ID,並與揚的」值的DateTime
2012年1月15日下午1:15:16「作爲」插槽「值。
繼從這裏指南:http://www.asp.net/web-api/overview/web-api-routing-and-actions/create-a-rest-api-with-attribute-routing我能得到它通過傳遞,在短短的日期段,即PUT /api/data/var/1/slot/2012/01/01
或PUT /api/data/var/1/slot/2012-01-01
工作,但只給了我一個數據值,沒有時間的部件。
有些東西告訴我,試圖通過URI段以任何理智的方式及時傳遞是一個壞主意,但我不確定爲什麼它會是一個壞主意,除了關於本地vs UTC時間的歧義之外。
我也嘗試用正則表達式約束datetime
約束,例如, {slot:datetime:regex(\\d{4}/\\d{2}/\\d{2})/\\d{4})}
試圖讓它解析類似2013/01/01/151617
作爲日期時間,但無濟於事。
我敢肯定我能得到這個帶有自定義IHttpRouteConstraint
工作,我只是不想做的事,可能是內置的。
謝謝!
謝謝!我最終爲此創造了自己的約束。結果非常簡單。 –
由於codeplex關閉,看起來源代碼鏈接即將死亡。似乎這已經克隆在Github [這裏](https://github.com/ASP-NET-MVC/aspnetwebstack/blob/master/src/Common/Routing/Constraints/DateTimeRouteConstraint.cs) –