MVCモデルバインディング
-
18-09-2019 - |
質問
私はリンクテキスト。私も検証の全てがMSエンタープライズライブラリ検証ブロックを使用して属性生成.NetTiersを使用していますので、私はこのライブラリを選択しました。
これは、バインディング、そのモデルが自動的にオブジェクトの検証と検証の概要を移入されたことを除いて正常に動作します。私は通常の動作でこれを信じています。
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Register([Bind()]NetTiersObject obj)
{
return View();
}
の検証ライブラリーはまた、次のように記載されて方法を有しています
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Register([Bind()]NetTiersObject obj)
{
try
{
obj.Validate<NetTiersObject>();
}
catch (EntityValidationException ex)
{
ViewData.ModelState.PopulateWithErrors(ex);
}
return View();
}
このも正常に動作します。
私の問題は、検証ライブラリのメソッドを使用している場合、それはエラーメッセージを複製ということです。ちょうど結合モデルを使用している場合、エラーメッセージが表示されます奇妙な。エラーメッセージにプロパティ名を持っています。
だから、私は私が完全に結合エラーメッセージまたは無効にモデルを結合モデルをフォーマットする必要があるのどちらかだと思います。
任意の勧告、助ける?
感謝します。
解決 2
私は私にModelStateが無効た理由に対する答えを見つけました。フォーム要素は、それがにModelStateはすぐに無効になることを唯一の方法である、モデルに一致しない。
私はより多くの詳細を見つけた場合、私はこの記事を更新します。
他のヒント
あなたは試してみるます:
/*At the Point the ModelState should be Valid(TRUE)
because we still didn't enforce any validations */
var v = ModelState.IsValid;
try
{
obj.Validate<NetTiersObject>();
}
catch (EntityValidationException ex)
{
ViewData.ModelState.PopulateWithErrors(ex);
}
とVがTrueの場合、それがあるべきチェック。
それが本当であれば、その唯一移入エラーが重複しているため、その後obj.Validate<NetTiersObject>();
が何か間違ったことをやっている。
modelBindingは、少なくともあなたのバインディングまたはフィールドを検証せずにDBに保存しようとしたカスタムモデルを使用していない場合は、モデルのエラーを取り込むべきではありませんので、私の問題は、使用している場合ということです 検証ライブラリのメソッドを エラーメッセージを複製します。いつ 単にエラーを結合モデルを使用して メッセージが奇妙に表示されます。エラー メッセージにプロパティ名を持っています。
その奇妙なある。