0

У меня есть поле SmallDateTime в моей базе данных Sql Server 2008 для хранения пользователей. Дни рождения.ASP.NET MVC 3 Binding & Validating Date to html управление текстовыми полями

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

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

Как я могу идти о:

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

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

ответ

1
[DisplayFormat(DataFormatString="{0:dd/MM/yyyy}", ApplyFormatInEditMode=true)] 
public DateTime DateOfBirth { get; set; } 

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

0

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

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

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

НТН

М.

EDIT: для проверки вещей увидеть это: other question on SO

0

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

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

[DataType(DataType.DateTime, ErrorMessage = "Please enter a valid date in the format dd/mm/yyyy")] 
public DateTime Birthday { get; set; }