問題タブ [modelstatedictionary]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
528 参照

asp.net-mvc - コレクション プロパティの項目の ModelStateDictionary のキーを決定するもの

これが私のビューモデルの場合:

次に、ModelStateDictionaryfor に割り当てられるデフォルトのエラー メッセージ キーは次のようになります。

  1. ViewModel.SimpleProperty (以下の更新を参照)
  2. ViewModel.ComplexProperty (以下の更新を参照)
  3. ViewModel.ComplexProperty.NestedSimpleProperty (以下の更新を参照)
  4. ViewModel.ComplexPropertyArray (以下の更新を参照)
  5. ViewModel.ComplexPropertyArray[0]
  6. ViewModel.ComplexPropertyArray[0].NestedSimpleProperty

更新 リフレクターでこれを見つけました:

#5 と #6を除くすべてを網羅していると思います。

0 投票する
2 に答える
491 参照

asp.net - 値が ModelState に保持されないようにする

良い一日!

ASP.NET MVC は、GET/POST サイクル中に入力の値を内部に格納ModelStateし、検証エラーが発生した場合にそれらを自動的に入力に入れることで、うまく機能します。

しかし、私のフォームには、検証エラー中に保持されるべきではない CAPTCHA フィールドがあります (CAPTCHA 値はリクエストごとに再生成されます)。

設定してこれを達成しようとしました

しかし、うまくいきません。

ModelState に保存されないように、モデル フィールドに適用できる属性があるのでしょうか?

前もって感謝します!

0 投票する
2 に答える
1421 参照

asp.net-mvc - ModelState.IsValid が添付されたエンティティを検証できないようにしますか?

オーバーライドする方法はありますModelState.IsValidか?

検証されるエンティティの一部は添付されたエンティティであるため、ID を除くすべてのフィールドはエンティティが状態であるため検証されませんUnchanged

これを行う方法はありますか?
以前にこの問題に直面した人はいますか?

アップデート

次のアクションがあるとします。

モデルは のすべてのプロパティとすべての子孫プロパティを検証するため、entityそれらの子孫の各エンティティを確認し、それがコンテキストに関連付けられているかどうかを確認し、関連付けられている場合は、ModelState次のようにからエラーを削除する方法が必要です。

上記の疑似コードで私がやろうとしているのは、検証チェーン内のエンティティをチェックすることです。そのうちの 1 つが として添付されている場合は、Unchanged検証をスキップしてエラーを削除します。

現在、チェックして手動でハードコーディングする必要がModelState.Keyあります。より一般的で効率的な方法を探しています。

0 投票する
0 に答える
78 参照

validation - サービス層の検証チェックの代わりに ModelState / ModelStateDictionary を使用する理由は何ですか

多くのオンラインの例やチュートリアルで、if (!ModelState.IsValid) { return View(model); }または同様のものが見られます。ModelState各アクションの実行前に実際にそのチェックを行うフィルターを作成しました。しかし、組み込みコンポーネント モデルの属性は非常に限られています。クライアント自体で実行できるチェックのみを使用し、一意性チェックやデータベースに対する単語のフィルタリングなどは何も提供していません。サービスコマンドへの「入力モデル」をチェックし、より詳細なチェックに失敗した場合はそれをスローするためのルールを含む、私のサービスレイヤーベースへのコンパニオン。

私の質問は、マイクロソフトの控えめな AJAX HTML ヘルパーを使用していない場合、非常に基本的なコンポーネント モデルの属性を気にする理由はありますか? 結局のところ、新しいモデルを作成し、各フィールドに注釈を付け、ドメイン モデルで最新の状態に保つ必要があります。

また、を使用する利点がある場合、ModelStateサービス層の検証チェックに接続するための推奨される方法は何ですか? それとも、他の理由でこれをしない人がいますか?

0 投票する
1 に答える
163 参照

asp.net-mvc-4 - MVC 4 ModelState が無効です。値を自動入力しようとしていて、新しい値を受け入れないためです。

コメント欄があります。ビューには、コメント エディター ボックスのみがあります。

モデルには、コメントがリンクされているコース、日付、コメント テキスト、およびユーザーもあります。他の値は create post メソッドに入力されます。

ここで問題が発生します。モデルは、実際に作業を行って設定する前にuserName、値のパラメーターを使用しようとしています。courseComment.UserName設定された後、ModelState変更されません。

たとえば、domain\abc123post メソッドに渡され、ModelStatefor にも設定されUserNameます。私はいくつかの作業を行い、userNametoを変更しabc123てリンクされた ID を見つけます。ID = 1 と言って、その名前のユーザーにそれを差し込んで、courseComment.UserName ModelStateまだそこに残しdomain\abc123、モデルは無効のままです。

現在、これは元の作業でしたが、主に列名といくつかの関係だけで、基礎となるデータベースを変更しました。

これに対する私の解決策。

post メソッドからユーザー名を受け取って移動する

get メソッドに。

次に、ビューを次のように変更しました

0 投票する
0 に答える
60 参照

helpers - この「ControllerHelpers」クラスはどこに追加すればよいですか?

かなり古い .NET チュートリアル「Nerd Dinner」では、ルール違反に対するヘルパー クラスの使用について説明しています。このクラスを参照できるようにどこに配置すればよいかわからないことを除いて、すべてが簡単に思えます。私はMVCでかなり新しいです。

以下はすべて、Nerd Dinner Tutorialからの抜粋です。

AddRuleViolations ヘルパー メソッドの使用

最初の HTTP-POST Edit 実装では、catch ブロック内で foreach ステートメントを使用して、Dinner オブジェクトのルール違反をループ処理し、それらをコントローラーの ModelState コレクションに追加しました。

「ControllerHelpers」クラスを NerdDinner プロジェクトに追加することで、このコードを少しきれいにすることができます。その中に、ASP.NET MVC ModelStateDictionary クラスにヘルパー メソッドを追加する「AddRuleViolations」拡張メソッドを実装します。この拡張メソッドは、ModelStateDictionary に RuleViolation エラーのリストを設定するために必要なロジックをカプセル化できます。

public static class ControllerHelpers {

public static void AddRuleViolations(この ModelStateDictionary modelState、IEnumerable エラー) {

} }