Вы можете определить EditorTemplate для DateTime либо в папке EditorTemplates в вашем представлении, либо в /Views/Shared/EditorTemplates.
.
Затем позвоните <%= Html.EditorFor(m => m.DateTimeProp) %>
.
\ Views \ Shared \ EditorTemplates \ DateTime.ascx:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<DateTime?>" %>
<%= Html.TextBox(ViewData.TemplateInfo.GetFullHtmlFieldName(string.Empty), Model.HasValue ? Model.Value.ToString("dd-MM-yyyy") : string.Empty) %>
С другой стороны:
Вы также можете добавить свое собственное расширение HtmlHelper, например DateTimeTextBoxFor
. К сожалению, шаблоны, используемые расширениями ____For
по умолчанию, имеют довольно статический шаблон.
Другая альтернатива:
Вы можете использовать Атрибуты данных для управления типом и форматом данных, однако, я думаю, вам все еще нужно использовать EditorFor
, чтобы заставить их работать (хотя для этого не требуется отдельный файл ASCX).
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd-MM-yyyy}")]
public DateTime DateTimeProp { get; set; }
<%= Html.EditorFor(m => m.DateTimeProp) %>