我正在使用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}") { }
}
现在的问题是,当我在输入中写入文本时,我看不到这个错误,但是我从ModelBinder中得到一条错误消息,说“明天的值对geplande会话无效”。
控制器中的代码:
[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();
}
我想要的是能够在模型绑定器之前运行数据注释,但这听起来几乎不可能。我真正想要的是我自己写的错误信息会出现在屏幕上。
对于日期时间,我也有同样的问题,我希望用户以“dd/mm/yyyy”的特定格式编写它,并且我有一个regex。但同样,当数据注释完成它们的工作时,我得到的只是一个日期时间对象,而不是原始字符串。因此,如果输入不是日期,那么regex甚至不会运行,因为数据注释只得到一个空值,因为模型绑定器无法将其设置为日期时间。