在MVC中,可以覆盖编辑器模板

时间:2012-07-22 09:41:45

标签: asp.net asp.net-mvc asp.net-mvc-3

是否可以覆盖编辑器模板?

我的模型中有DateTime字段,用于到达/离开日期 - 这些字段使用以下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能够显示时间 - 但编辑模板显然只显示日期。

这可以被覆盖吗?或者还有另一种方法吗?

谢谢,

标记

3 个答案:

答案 0 :(得分:11)

您可以添加另一个显示时间的命名编辑器,并使用EditorFor的重载,它接受模板名称作为第二个参数,如:

EditorFor(m =&gt; m.TimeBooked,“DateWithTimeTemplate”)

MSDN help

答案 1 :(得分:4)

您可以使用UIHintAttribute属性。 您可以使用此属性修饰TimeBooked属性,以便MVC知道要使用哪个编辑器。

答案 2 :(得分:0)

是的,你可以通过添加hh:mm占位符来实现这一点。

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

有关更多示例,请参阅here ..