動的モデルとModelState
-
12-11-2019 - |
質問
次のようなアクションがあります。
Update([Bind(Prefix = "CurrentModel")] dynamic edited)
しかし、動的を使用すると、 ModelState.IsValid
常に true を返すので、動的オブジェクトの検証が行われていないように見えますか?そうでない場合、どうすればこれを解決できますか?
解決
次の 2 つのケースがあります。
View Model をアクション引数として使用している場合、デフォルトのモデル バインダーは自動的にプロパティを割り当て、モデルの状態に考えられるエラーを設定します。
public ActionResult Update([Bind(Prefix = "CurrentModel")] EditViewModel edited) { if (ModelState.IsValid) { } ... }
どちらかで弱い型付けを使用しています
dynamic
またはFormCollection
この場合、デフォルトのモデル バインダーは実際のモデル タイプを推測できないため、起動せず、検証もまったく実行しません。この場合、手動で呼び出す必要がありますTryUpdateModel
モデルのタイプを指定します。public ActionResult Update(dynamic edited) { var model = new MyViewModel(); if (!TryUpdateModel(model, "CurrentModel")) { // The model was not valid } ... }
結論:使用して dynamic
コントローラーアクションのアクション引数はほとんど意味がありません。
所属していません StackOverflow