我有我的模型的屬性如下:DisplayFormat停止在Chrome中顯示英國日期?
[DisplayName("Manufactured Date")]
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
public DateTime? DateManufactured { get; set; }
在我搭建的MVC核心觀點我有這樣的代碼,以顯示該值:
<input asp-for="LiftingItem.DateManufactured" class="form-control" />
在Chrome中,輸入顯示文本「 DD/MM/YYYY」,我得到的錯誤:
The specified value "09/02/2006" does not conform to the required format, "yyyy-MM-dd".
而在IE中,我得到的實際日期(例如 「2006年9月2日」)。我認爲這種差異是因爲Chrome使用HTML 5日期類型輸入,因此需要「yyyy-MM-dd」格式的格式才能顯示它?
如果我刪除DisplayFormat
屬性,果然它可以在Chrome中運行,但在IE中日期格式不正確(「yyyy-MM-dd」而不是「dd/mm/yyyy」)。
因此,看起來像使用非「yyyy-MM-dd」格式的DisplayFormat
可以阻止Tag Helpers的工作?有什麼辦法可以很好地兼容HTML 5兼容和舊版瀏覽器?
PS:我也嘗試在視圖中應用格式,而不是使用asp-format="{0:dd/MM/yyyy}
as described in this question,但這也阻止了它在Chrome中的工作。
編輯:我也可以刪除[DataType(DataType.Date)]
,但是我沒有在兼容HTML5的瀏覽器中使用datepicker,我一定會在移動設備上使用它。
嘿,謝謝你。刪除'[DataType(DataType.Date)]'位的問題是你沒有得到瀏覽器內置的datepicker,這在移動設備上很痛苦。理想情況下,我還希望在桌面上使用內置datepicker的瀏覽器(其中有一個)。 – tomRedox
@tomRedox是的你是對的。通過刪除'[DataType(DataType.Date)]',類型將不會被設置爲等於輸入元素的日期,即在HTML代碼''中不會得到這個。令人遺憾的是,事實上,對於Firefox,IE,Safari和舊版瀏覽器,您不會在上面使用數據註釋獲取日期選擇器。 – Aquablue
謝謝,很高興知道我不會生氣!也許嘗試使用數據註釋是錯誤的方法,也許我應該查看某種條件邏輯來檢查HTML5瀏覽器,並根據是否使用HTML5瀏覽器來設置「輸入類型」。 – tomRedox