Я использую linq to SQL и MVC2 с аннотациями данных, и у меня возникают некоторые проблемы при проверке некоторых типов.
Например:
[DisplayName("Geplande sessies")]
[PositiefGeheelGetal(ErrorMessage = "Ongeldige ingave. Positief geheel getal verwacht")]
public string Proj_GeplandeSessies { get; set; }
Это целое число, и я проверяю, чтобы получить положительное число из формы.
public class PositiefGeheelGetalAttribute : RegularExpressionAttribute {
public PositiefGeheelGetalAttribute() : base(@"\d{1,7}") { }
}
Теперь проблема в том, что когда я пишу текст на входе, я не вижу ЭТОЙ ошибки, но получаю сообщение об ошибке из связывателя модели, говорящее: «Значение« Завтра »недопустимо для сессий Гепланда».
Код в контроллере:
[HttpPost]
public ActionResult Create(Projecten p)
{
if (ModelState.IsValid)
{
_db.Projectens.InsertOnSubmit(p);
_db.SubmitChanges();
return RedirectToAction("Index");
}
else
{
SelectList s = new SelectList(_db.Verbonds, "Verb_ID", "Verb_Naam");
ViewData["Verbonden"] = s;
}
return View();
}
Что я хочу, так это иметь возможность запускать аннотации данных до подшивки модели, но это звучит практически невозможно. Что я действительно хочу, так это чтобы мои написанные сообщения об ошибках появлялись на экране.
У меня та же проблема с DateTime, которую я хочу, чтобы пользователи писали в конкретной форме 'dd / MM / yyyy', и у меня есть регулярное выражение для этого. но опять же, к тому времени, когда аннотации данных выполняют свою работу, я получаю только объект DateTime, а не исходную строку. Поэтому, если входные данные не являются датой, регулярное выражение даже не запускается, потому что аннотации данных просто обнуляются, потому что механизм связывания модели не может перейти в DateTime.
У кого-нибудь есть идеи, как заставить это работать?