2015-11-02 213 views
0

我試圖顯示此格式的日期:yyyy-MM-dd HH:mm,但它不工作(當然yyyy-MM-dd工作正常的,問題是隨着時間的推移)MVC DisplayFormat日期+時間

MODEL:

[DataType(DataType.Date)] 
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd HH:mm}", ApplyFormatInEditMode = true)] 
public DateTime eventstart { get; set; } 

VIEW:

<div class="form-group"> 
     @Html.LabelFor(model => model.eventstart, htmlAttributes: new { @class = "control-label col-md-2" }) 
     <div class="col-md-10"> 
      @Html.EditorFor(model => model.eventstart, new { htmlAttributes = new { @class = "form-control" } }) 
      @Html.ValidationMessageFor(model => model.eventstart, "", new { @class = "text-danger" }) 
     </div> 
</div> 
+2

那麼*會發生什麼?你爲什麼試圖將日期顯示爲日期和時間?如果你想要一個日期和時間,使用'DataType.DateTime' ... –

+0

沒有任何反應。該字段看起來像沒有任何註釋。 – DiPix

+0

那麼,什麼*顯示?那麼其他問題的答案呢? –

回答

1

我假設你生成與type="date"的輸入。還有的將是兩個問題需要注意的與:

  1. 由於@JonSkeet指出的那樣,如果你想與日期時間來工作,那麼你需要使用DataType.DateTime。這將導致輸入被渲染爲type="datetime"。在輸入「日期」類型的情況下,任何時間組件都將被丟棄,最多或最差將不允許爲瀏覽器日期控件正確解析值,這會使我們得到:

  2. HTML5 datetime輸入類型「datetime」,「date」,「time」)需要值爲ISO格式,即YYYY-MM-DDTHH:MM:SSZ。根據解析ISO格式的日期,瀏覽器控件將以用戶本地格式顯示,但必須首先以ISO格式給出值。如果不是,則將其視爲空值,並將輸入值顯示爲空。

+0

請注意,HTML5'type =「datetime」'目前不是支持(參考[比較](https://html5test.com/compare/browser/chrome-44/firefox-40/ie-11.html)) –

+0

我認爲唯一的解決方案是3個屬性。 (DataFormatString =「{0:yyyy-MM-dd}」,ApplyFormatInEditMode = true)] public DateTime eventstart {get;組; }' Second: '[DataType(DataType。時間)] [DisplayFormat(DataFormatString =「{0:HH:mm}」,ApplyFormatInEditMode = true)] public DateTime eventstart {get;組; } 第三: 合併第一和第二屬性 – DiPix

0

變化:

@Html.EditorFor(model => model.eventstart, 
       new { htmlAttributes = new { @class = "form-control" } }) 

要:

@Html.EditorFor(model => model.eventstart, 
       new { htmlAttributes = new { @class = "form-control", @type="date" } }) 

相信它會工作。