2009-12-07 32 views

回答

4

您可以使用特定格式(例如yyyymmdd)在查詢字符串中傳遞日期,然後在Controller中正確解析它。

&date=02/12/2009 
change to 
&date=20091202 (yyyymmdd) 

您既可以圍繞該使用這種新的格式實例化的還是自己的解析它在控制器中的DateTime對象的包裝。

public MyWrapperDate(int date) 
{ 
    int year = date/10000; 
    int month = ((date - (10000 * year))/100); 
    int day = (date - (10000 * year) - (100 * month)); 

    this.DateTimeObject = new DateTime(year, month, day); 
} 
0

你可以URL編碼,但各地的傳遞日期時間爲字符串總是有點棘手,因爲如果請求曾經跨越文化邊界,您可能會遇到解析錯誤。

更好的選擇是將DateTime轉換爲Ticks並傳遞該數字。

+0

如何使用ISO格式(yyyy-MM-dd)?我們是否仍然需要轉換爲蜱蟲。 – maxspan 2016-06-23 04:41:02

0

MVC在生成URL和綁定模型時使用當前文化。這在某些情況下是有意義的(比如當你有一個文本框並且用戶在那裏輸入日期時),但是經常有問題。如果你有不同的文化,那麼如果價值總是以不變文化的形式出現,那麼它就更容易。

在你的情況下,我會將值作爲不變文化呈現的字符串傳遞。然後我將使用CustomModelBinder來填充模型中的屬性。

13

ISO 8601標準是yyyy-MM-dd,它是明確的,不包含任何無效的URL字符,並在DateTime.Parse/TryParse中正常工作。

另一種選擇是使用任何你想要的格式,並簡單地使用HttpServerUtility.UrlEncode/UrlDecode對URL進行編碼。

相關問題