дата и время аннотации не работают - PullRequest
0 голосов
/ 22 марта 2012

Мне нужно убедиться, что дата и время действительны с проверкой.

Razor MVC3

Класс

[Range(typeof(DateTime), "1/1/1930", "1/1/2112", 
 ErrorMessage = "Value for {0} must be between {1} and {2}")]
public DateTime DOB { get; set; }

Редактировать форму просмотра

<span class="editor-field">
@Html.EditorFor(model => model.DOB)
@Html.ValidationMessageFor(model => model.DOB)

Проверка фиксирует недопустимую дату, но не устраняет ошибку привведена правильная дата, поэтому форма зависла.Кто-нибудь знает, как использовать Validation для проверки правильности даты и времени?

Спасибо, Джо

Обновлено действие контроллера

[HttpPost]
public ActionResult Create(Talent talent)
{
  talent.Modified = talent.Created = DateTime.Now;
  if (talent.DOB < DateTime.Now.AddYears(-100) || talent.DOB > DateTime.Now)
  {
    talent.DOB = DateTime.Parse("0001/01/01"); talent.Skill = "changed"; 
    return View(talent); }

Окончательный контроллер и действие после

string errorMessageDOB = "DOB is out of range, it needs to be between " + DateTime.Now.AddYears(-100).ToShortDateString()
    + " and " + DateTime.Now.ToShortDateString() + ".";
//
// POST: /Talent/Create

[HttpPost]
public ActionResult Create(Talent talent)
{
  talent.Modified = talent.Created = DateTime.Now;
  if (talent.DOB < DateTime.Now.AddYears(-100) || talent.DOB > DateTime.Now)
  { ModelState.AddModelError(string.Empty, errorMessageDOB); }

1 Ответ

2 голосов
/ 22 марта 2012

Вы можете реализовать пользовательский атрибут проверки, как показано в этой статье .

...