Форматирование даты и времени с помощью редактора шаблона MVC - PullRequest
2 голосов
/ 04 ноября 2011

Я хочу отформатировать DateTime, отображаемый в TextBoxes, без времени и в этом формате: 01 января 2011 года вместо стандартного 01.01.2011 для сценариев отображения и редактирования.

Я уже использую следующий шаблон для DateTime для использования DatePicker. Можно ли здесь как-то включить форматирование?

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<System.DateTime?>" %>
<%: Html.TextBox("",ViewData.TemplateInfo.FormattedModelValue, new { @class = "text-box single-line" }) %>

Заранее спасибо.

Ответы [ 2 ]

5 голосов
/ 04 ноября 2011
<%= Html.TextBox("",  Model.HasValue ? Model.Value.ToString("dd MMM, yyyy") : "", new { @class = "text-box single-line" }) %>

или еще лучше на модели представления:

[DisplayFormat(DataFormatString = "{0:dd MMM, yyyy}", ApplyFormatInEditMode = true)]
public DateTime? Foo { get; set; }
3 голосов
/ 04 ноября 2011

это ViewData.TemplateInfo.FormattedModelValue объект datetime?

, чтобы получить нужный формат из объекта DateTime, используйте следующее:

var now = DateTime.Now;
var formattedDate = now.ToString("dd MMM, yyyy");

это должно работать

<%= 
var theDate = Model.HasValue ? Model.Value.ToString("dd MMM, yyyy") : DateTime.Now.ToString("dd MMM, yyyy");


Html.TextBox("", theDate, new { @class = "text-box single-line" }) %>

Причина, по которой вы вызываете ошибку при вызове Model.ToString("dd MMM, yyyy"), заключается в том, что это объект Nullable, а метод ToString () не принимает никаких параметров.Значением модели является объект DateTime, который принимает параметры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...