我正在使用带有数据注释的 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}") { }
}
现在的问题是,当我在输入中写入文本时,我看不到这个错误,但我从模型绑定器中得到错误消息,说“值'明天'对 Geplande sessies 无效。”
控制器中的代码:
[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。
有谁知道如何使这项工作?