Как отформатировать дату в представлении для двусторонней привязки в MVC 2? - PullRequest
3 голосов
/ 29 марта 2010

Итак, скажем, у меня есть представление, которое имеет доступ к дате:

<%= Html.TextBoxFor(model => Model.Birthday) %>

Как мне сделать так, чтобы моя точка зрения определяла форматирование этой даты? Я хотел бы использовать общие параметры форматирования , и важно, чтобы это было двухстороннее (как для отображения, так и для ввода данных).

Ответы [ 3 ]

4 голосов
/ 29 марта 2010

В вашей модели вы можете использовать метаданные System.ComponentModel.DataAnnotations, чтобы указать формат, в котором вы хотите свойство. Например,

[DisplayFormat(DataFormatString="{0:MM/dd/yyyy}")]
public DateTime Birthday { get; set; }

Then, in your view, use:
<%= Html.EditorFor(model => model.Birthday) %>

К сожалению, обычные помощники HTML не учитывают метаданные, поэтому вы должны использовать Html.EditorFor.

2 голосов
/ 29 марта 2010

Используйте определенный класс ViewModel, который имеет строку в формате, который вы хотите для дня рождения, и используйте его для отображения в текстовом поле. Когда вы публикуете форму, если вы используете привязку по умолчанию для самого объекта домена, она должна проанализировать строку для вас. Если вы используете ViewModel, вам придется анализировать его после публикации формы.

0 голосов
/ 31 марта 2010

Я был немного удивлен, увидев, что вы не можете просто выбросить строку формата в Html.EditorFor (). Я грешил, начав использовать EditorTemplates.

Создайте структуру каталогов в своем решении.

Просмотров> Общий> EditorTemplates

Добавьте новый пользовательский элемент управления MVC 2 в папку EditorTemplates и назовите его DateTime.ascx. Html.EditorFor (DateTime) теперь будет использовать этот пользовательский элемент управления для отображения.

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<DateTime?>" %>
<%= Html.TextBox(string.Empty, (Model.HasValue ? Model.Value.ToShortDateString() : string.Empty)) %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...