ASP.NET MVC 3 Дата привязки и проверки для элемента управления текстового поля HTML - PullRequest
0 голосов
/ 06 октября 2011

У меня есть поле SmallDateTime в моей базе данных Sql Server 2008 для хранения дней рождения пользователей.

На моей веб-странице «Редактировать профиль» у меня есть стандартный textbox, к которому я хочу привязать дату «Дня рождения» (исключая время, поскольку это не требуется). В настоящее время я привязываюсь к текстовому полю, но он отображает полную дату и время.

Кроме того, когда пользователь обновляет свой профиль, я хочу иметь возможность проверять текстовое поле «День рождения», гарантируя, что указанное значение соответствует dd/mm/yyyy, и любые отклонения от него выделяются с помощью моего существующего отчета о проверке на странице .

Как мне поступить:

a) настройка свойства Birthday в моей ViewModel для отображения в формате dd/mm/yyyy (без учета времени).

b) подтвердить День рождения (на основе формата dd/mm/yyyy), когда пользователь отправляет форму?

Ответы [ 3 ]

1 голос
/ 06 октября 2011
[DisplayFormat(DataFormatString="{0:dd/MM/yyyy}", ApplyFormatInEditMode=true)]
public DateTime DateOfBirth { get; set; }

Это должно дать вам автоматическое форматирование на поле (без необходимости делать это вручную), а также проверку.

0 голосов
/ 06 октября 2011

а) вы можете использовать .ToShortDateString для отображения даты и времени без времени. Формат по-прежнему зависит от глобализации по умолчанию.

b) для проверки вы можете сделать это с помощью аннотаций данных в вашей модели, например:

[DataType(DataType.DateTime, ErrorMessage = "Please enter a valid date in the format dd/mm/yyyy")]
public DateTime Birthday { get; set; }
0 голосов
/ 06 октября 2011

Я обычно использую строковое свойство в паре с объектом DateTime, что-то вроде

public string MyDateStr 
{
   get 
   {
       return MyDateDate == null ? "" : MyDateDate.ToShortDateString();
   }
   set
   {
      // Usually a tryParse for the string value
   }
}

Я знаю, что это не канонический путь, но до сих пор это самый быстрый, который я нашел.

НТН

М.

РЕДАКТИРОВАТЬ: для проверки см. Это: другой вопрос по SO

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