【问题标题】:In MVC is it possible to override an editor template在 MVC 中是否可以覆盖编辑器模板
【发布时间】:2012-07-22 18:21:29
【问题描述】:

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

我的模型中有 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 也显示时间 - 但编辑器模板显然只显示日期。

这可以被覆盖吗?或者有其他方法吗?

谢谢,

标记

【问题讨论】:

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


    【解决方案1】:

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

    EditorFor(m=>m.TimeBooked, "DateWithTimeTemplate")

    MSDN help

    【讨论】:

    • 请记住,局部视图应该在 Shared/EditorTemplates/ 中才能正常工作
    【解决方案2】:

    您可以使用UIHintAttribute 属性。 你可以用这个属性装饰TimeBooked 属性,这样 MVC 就会知道要使用哪个编辑器。

    【讨论】:

      【解决方案3】:

      是的,您可以通过添加 hh:mm 占位符来做到这一点。

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

      更多示例,请参阅here..

      【讨论】:

      • 这不是他问的问题。这就是两个编辑器模板的不同之处,他首先问他如何使用两个编辑器模板。
      猜你喜欢
      • 1970-01-01
      • 2012-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-22
      • 1970-01-01
      • 2011-06-13
      • 2013-03-27
      相关资源
      最近更新 更多