問題:
Asp.NET Web API が次のように設定されているとします。
Platform: ASP.NET 4.5, Owin, C#,
Globalisation Culture: en-GB
ApiController で UrlHelper を使用して Url リンクを作成し、日付を 2016 年 9 月 2 日の今日に設定すると、次のようになります。
var someObject = new SomeObject{ ..., DateFrom = DateTime.Today, ... };
base.Url.Link("whatever", someObject );
次に、日付が en-US (09/02/2016 00:00:00) にエンコードされた結果が得られます。
http://localhost:52321/...DateFrom=09%2F02%2F2016%2000%3A00%3A00
質問
出力がより「フレンドリー」になるようにプロセスをオーバーライドするにはどうすればよいですか。
http://localhost:52321/...DateFrom=2016-09-02
文字列の日付を持つ匿名オブジェクトに変換せずにこれを達成する方法、したがって
var someObject = new SomeObject{ ..., DateFrom = DateTime.Today, ... };
var anon = new { ..., DateFrom = someObject.DateFrom.ToString("yyyy-MM-dd"), ...}
base.Url.Link("whatever", anon ); // no thanks
アップデート
少なくとも、エンコーディングを en-GB (02/09/2016 00:00:00) にしたいと考えています。私の現在の文化はen-GBであり、en-USではないため、動作が非常に奇妙だと思うからです。したがって...
http://localhost:52321/...DateFrom=02%2F09%2F2016%2000%3A00%3A00