У меня есть модель EF, которая использует DataAnnotationValidator.cs в качестве универсального класса для проверки. Мне нравится этот подход, за исключением типов данных даты. Я нашел много информации о проверке всего, кроме дат. Как вы проверяете дату, используя эту технику? Следующее отображает дату правильно, но допускает любой ввод с правильным форматированием в качестве допустимой даты: 32/32/2014 проходит тест, а 32//2014 – нет.
Я пробовал это с [DataType (DataType.DateTime)] и без него. Я пробовал RegularExpression без успеха. Я должен что-то упустить. Любая помощь приветствуется. Спасибо.
[MetadataType(typeof(v_Demographics_Metadata))]
public partial class v_Demographics
{
}
class v_Demographics_Metadata
{
[Display(Name = "Date of Birth"), DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:d}")]
[DataType(DataType.DateTime)]
public Nullable<System.DateTime> DateOfBirth { get; set; }
}
ОБНОВЛЕНИЕ: найдено это решение. Модифицировал следующим образом. Хотя это не совсем то, что я хотел сделать, пока это работает хорошо. Мне просто нужно добавить некоторую проверку в jQuery
Создал DateTime.cshtml в \Shared\EditorTemplates со следующим:
@model System.DateTime?
@Html.TextBox("", String.Format("{0:d}", Model.HasValue ? Model : DateTime.Today), new { @class = "dp" })
Я добавил следующий jQuery в свой DemographicsView. Я планирую протестировать jQuery в _Layout.cshtml, чтобы увидеть, как это влияет на весь сайт.
<script type="text/javascript">
$(document).ready(function () {
$('.dp').datepicker({
changeMonth: true,
changeYear: true,
showOn: "button",
buttonImage: "/Images/calendar.gif",
buttonImageOnly: true
});
});
</script>
DateTime
на сервере. - person Jasen   schedule 03.04.2014