2012-07-22 72 views
1

是否可以重寫編輯器模板?在MVC中可以重寫編輯器模板

我在我的模型,用於到達/離開日期日期時間字段 - 這些是使用以下EditorTemplate呈現:

@model Nullable<System.DateTime> 

@if (Model.HasValue) { 
    @Html.TextBox("" , String.Format("{0:dd/MM/yyyy}" , Model.Value) , new { @class = "datepicker span2" }) 
} 
else { 
    @Html.TextBox("" , String.Format("{0:dd/MM/yyyy}" , DateTime.Now) , new { @class = "datepicker span2" }) 
} 

...這將格式化日期時間字段如:01/08/2012

不過,我也想展示,在另一個領域,日期和時間的預訂是由例如:

22/07/2012 08:23 

我的模式是:

public DateTime Arrival { get; set; } 
    public DateTime Departure { get; set; } 
    public DateTime TimeBooked { get; set; } 

我想TimeBooked也顯示時間 - 但編輯模板顯然只是顯示日期。

這可以被覆蓋嗎?或者有另一種方法來做到這一點?

謝謝

馬克

回答

10

可以添加不同的命名編輯其示出了時間也和使用EditorFor的過載,它接受模板名稱作爲第二個參數,如:

EditorFor(M => m.TimeBooked,「DateWithTimeTemplate」)

MSDN help

+0

請記住,部分視圖應該在共享/編輯器模板/爲它工作 – Juan 2016-08-30 19:45:57

0

是的,你可以做到這一點通過增加hh:mm佔位符..

String.Format("{0:d/M/yyyy HH:mm:ss}", DateTime.Now) 

更多的例子,請參閱here ..

+0

這不是他問的問題。這就是兩個編輯器模板的不同之處,他問他如何首先使用兩個編輯器模板。 – thelem 2016-08-15 10:22:57

3

你可以通過使用UIHintAttribute屬性。 您可以使用此屬性修飾TimeBooked屬性,以便MVC知道使用哪個編輯器。