Изменить отображение DateTime в MVC - PullRequest
2 голосов
/ 18 мая 2011
<%= Html.TextBoxFor(m => m.Trx.TradeDate, new { @class = "economicTextBox", propertyName = "Trx.TradeDate", dontRegisterNewIndication = true })%>

Поскольку это TextBoxFor, я не могу просто изменить способ отображения (не думаю?), Потому что мне нужно иметь конкретное значение свойства, к которому я привязываю это.

Это отображает полный DateTime хотя - 5/18/2011 10:21:22 AM

Как заставить его отображать только часть 5/18/2011?

Должен ли я сделать это через Javascript? Это поле также является полем JQuery DatePicker.

1 Ответ

1 голос
/ 18 мая 2011

Вы можете определить 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) %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...