簡體   English   中英

ASP.NET WebAPI(4.x 框架)中的日期時間值綁定

[英]DateTime values binding in ASP.NET WebAPI (4.x Framework)

當 WebAPI 的綁定框架運行時,我似乎無法理解是什么控制了 DateTime 值的解析方式。 一些測試代碼:

public class TestSearchModel
{
    public DateTime? From { get; set; }
    public DateTime? Until { get; set; }
    public string Freetext { get; set; }
}

...

    public HttpResponseMessage Get([FromUri] TestSearchModel searchModel)
    {
        //CultureInfo culture = Thread.CurrentThread.CurrentCulture;

        return Request.CreateResponse(
            $"Received search request with Freetext: {searchModel.Freetext}, From: {searchModel.From}, Until: {searchModel.Until}");
    }

然后我用各種請求進行測試,例如:

http://localhost:9000/api/search?freetext=oi-vei.&from=14.07.2020 (1)

http://localhost:9000/api/search?freetext=oi-vei.&from=07.14.2020 (2)

http://localhost:9000/api/search?freetext=oi-vei!&from=2020-07-14 (3)

自由文本只是作為測試存在 - 它總是綁定得很好。 格式(3)中的日期綁定很好,我想這與文化不變格式足夠接近。 我不明白為什么當應用程序的文化設置為這種日期格式(在我的例子中是挪威語)時格式(1)不起作用。

我們的目的是讓 API 的消費者在任何情況下都使用文化不變的格式,但我們也認為能夠識別國家格式會很好 - 當我們無論如何從請求的標頭中設置當前文化時。 我意識到我可以連接自己的活頁夾並編寫任何我想要的程序,但這似乎是框架應該已經具備的東西。 它確實以一種或另一種方式解析日期時間值。 所以問題是:綁定系統在嘗試解析日期值時如何決定使用什么日期格式?

我不確定,但我希望這段代碼對你有更多幫助。 您可以更改日期格式並在 quertString 中傳遞區分大小寫的參數。

http://localhost:9000/api/search?Freetext=oi-veii&From=14-07-2020

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM