ASP.NET MVC 3 Дата привязки и проверки для элемента управления текстового поля HTML
У меня есть SmallDateTime
поле в моей базе данных Sql Server 2008 для хранения дней рождения пользователей.
На моей веб-странице "Изменить профиль" у меня есть стандарт textbox
с которой я хочу связать дату "дня рождения" (исключая время, поскольку это не требуется). В настоящее время я привязываюсь к текстовому полю, но он отображает полную дату и время.
Кроме того, когда пользователь обновляет свой профиль, я хочу иметь возможность проверить текстовое поле "День рождения", убедившись, что указанное значение соответствует dd/mm/yyyy
и любые отклонения от этого выделены в моем существующем резюме проверки на странице.
Как мне поступить:
а) настройка свойства Birthday в моей ViewModel для отображения в dd/mm/yyyy
формат (без учета времени).
б) подтвердить день рождения (на основе dd/mm/yyyy
формат) когда пользователь отправляет форму?
3 ответа
[DisplayFormat(DataFormatString="{0:dd/MM/yyyy}", ApplyFormatInEditMode=true)]
public DateTime DateOfBirth { get; set; }
Это должно дать вам автоматическое форматирование на поле (без необходимости делать это вручную), а также проверку.
Я обычно использую строковое свойство в паре с объектом DateTime, что-то вроде
public string MyDateStr
{
get
{
return MyDateDate == null ? "" : MyDateDate.ToShortDateString();
}
set
{
// Usually a tryParse for the string value
}
}
Я знаю, что это не канонический путь, но до сих пор это самый быстрый, который я нашел.
НТН
М.
РЕДАКТИРОВАТЬ: для проверки материала см. Это: другой вопрос о SO
А) вы можете использовать.ToShortDateString для отображения даты и времени без времени. Формат по-прежнему зависит от глобализации по умолчанию.
б) для проверки вы можете сделать это с помощью аннотаций данных в вашей модели, например:
[DataType(DataType.DateTime, ErrorMessage = "Please enter a valid date in the format dd/mm/yyyy")]
public DateTime Birthday { get; set; }