データ注釈付きの 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}") { }
}
ここでの問題は、入力にテキストを書き込むときに、このエラーが表示されないことですが、モデルバインダーから「値 'Tomorrow' は 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 にできないため、データ注釈が null になるだけです。
これを機能させる方法を知っている人はいますか?