2013-02-17 74 views
3

我在.Net MVC4應用程序的模型中有一個DateTime字段。我希望編輯視圖顯示日期值,同時向用戶顯示使用日曆控件的選項。日期在Asp.Net中顯示選項MVC

添加屬性[DisplayFormat(DataFormatString = "{0:d}",ApplyFormatInEditMode = true)]示出了用戶的當前值作爲文本字段: Display Foramat output

添加[DataType(DataType.Date)]顯示 「MM/DD/YYYY」 並隱藏當前值: DateFormat(DataType.Date) output

和提供了一個很好日曆小部件選擇向下箭頭時:
Calendar widget

有沒有一種方法可以結合這個功能,所以我們呃可以看到當前選擇的日期和日曆小部件?

更新

這是瀏覽器的行爲。由控制產生的標記包含當前日期值:

<input class="text-box single-line" data-val="true" data-val-date="The field Dining Date must be a date." data-val-required="The Dining Date field is required." id="DiningDate" name="DiningDate" type="date" value="2/15/2013"> 

IE9由表示無插件的日期呈現此標記,而鉻隱藏的日期。

+1

請問實際的HTML' danludwig 2013-02-17 14:32:37

+0

@danludwig謝謝你指向我生成的標記,這是問題。 – 2013-02-17 15:34:46

回答

6

IE9通過展示不小部件

IE9不支持的日期輸入所有日期呈現此標記,這樣你就可以有關該Web瀏覽器的任何部件忘記。甚至連IE10都不支持:-)請看following article以查看支持HTML5日期輸入的網頁瀏覽器。所有其他不支持它的瀏覽器將只顯示標準文本框,而不包含任何日期時間選擇器小部件。

而Chrome隱藏日期。要顯示

HTML specification指出的日期輸入字段的value屬性必須按順序使用RFC 3339 format此默認值:

<input id="Date" name="Date" type="date" value="2013-02-17" /> 

如果value使用不同的格式,那麼該缺省值將不會顯示。

所以一定要確保你尊重的規範,如果你不想讓未定義行爲:

[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)] 

,然後你會得到預期的結果:

enter image description here

+0

+1這樣做,感謝解釋和快速反應。 – 2013-02-17 14:56:57