Model.IsValid всегда ложно, когда я вставляю дату и время - PullRequest
2 голосов
/ 16 марта 2011

У меня есть следующий класс:

public class Post
{
    [DataType(DataType.Date, ErrorMessage="Please fill in a valid date.")]
    [RegularExpression(@"^\d{1,2}\/\d{1,2}\/\d{4}$", ErrorMessage="Fill in a valid date.")]
    public DateTime? PublishDate { get; set; }
}

, и в моем действии «Правка» он у меня такой:

[HttpPost]
public ActionResult Edit(Post post)
{
    if (ModelState.IsValid)
    {
        return RedirectToAction("Index");
    }
    else
    {
        return View(post);
    }
}

Но мой ModelState всегда недействителен.Как так?Как я могу решить эту проблему?

Я также написал здесь: http://forums.asp.net/t/1663783.aspx/1?MVC3+how+to+check+datetime+on+model+with+unobtrusive+javascript+.

Обновление: я обнаружил, что действительно есть ошибка через:

ModelState.Values.Select(x => x.Errors);

Но как можноЯ узнаю, как он туда попадает?И что более важно, как я могу решить это?

1 Ответ

1 голос
/ 31 августа 2011

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

...