您可以使用DisplayTemplates和EditorTemplates來定義如何顯示特定類型的屬性。
在視圖>共享文件夾中創建名爲DisplayTemplates的文件夾,然後創建另一個名爲EditorTemplates的文件夾,然後可以爲要顯示的每種不同類型的屬性添加自定義模板。模板以類似於部分的方式工作。
我有一個DisplayTemplate的日期時間
@model DateTime
@if (Model.Value.Year == 1) {
@Html.TextBox("", "")
} else {
@Html.TextBox("", (Model.Value.ToString("dd/MM/yyyy")))
}
<span class="help-text">dd/mm/yyyy</span>
這裏是一個時間跨度的EditorTemplate
@model TimeSpan
@Html.DropDownList("", Enumerable.Range(0, 30)
.Select(i => new SelectListItem { Value = i.ToString(),
Text = i.ToString(), Selected = Model.Days == i })) days
@Html.DropDownList("", Enumerable.Range(0, 24)
.Select(i => new SelectListItem { Value = i.ToString(),
Text = i.ToString(), Selected = Model.Hours == i })) hours :
@Html.DropDownList("", Enumerable.Range(0, 60)
.Select(i => new SelectListItem { Value = i.ToString(),
Text = i.ToString(), Selected = Model.Minutes == i })) minutes :
@Html.DropDownList("", Enumerable.Range(0, 60)
.Select(i => new SelectListItem { Value = i.ToString(),
Text = i.ToString(), Selected = Model.Seconds == i })) seconds
我要提醒的是,你可以花很多時間試圖讓EditorForModel到究竟是如何工作的你想要它,但總是會遇到不正常工作的情況,你必須訴諸手工編碼。
我們現在使用HTML幫助器來包裝我們的每個屬性的自定義HTML,這可以很好地與所描述的自定義模板一起工作,但也允許更多的靈活性。我們使用這個頁面作爲我們定製的HTML包裝的靈感。 ASP.NET MVC 3 Custom HTML Helpers- Best Practices/Uses查看具有最高票數而非接受答案的答案。
當您使用[DataType(DataType.Date)] ASP.NET MVC生成一個輸入字段type =「date」。支持HTML5的瀏覽器(Chrome)在這些字段上使用日期選擇器。該字段的值必須格式化爲YYYY-MM-DD才能正確顯示。你在IE,Chrome,FF中獲得不同的結果嗎? – Erwin
@Erwin,除Chrome之外,我沒有檢查瀏覽器,但我只試過yy/mm/dd和yy-mm-dd,而不是yyyy。自那時起我就解決了這個問題,但稍後會再看一次。 – ProfK
我希望[這] [1]可以幫助你。 P.S.我有同樣的,並幫助我 [1]:http://stackoverflow.com/questions/12633471/mvc4-datatype-date-editorfor-wont-display-date-value-in-chrome-fine-in- interne – alikhil