問題タブ [modelbinders]
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.
asp.net-mvc - URI の時刻部分を含む mvc.net DateTime
分単位で指定できる範囲内の時系列データを返す一連のアクションがあります。それらはクエリ文字列、
つまり
/mycontroller/myaction?from=20091201 10:31&to=20091202 10:34
URL エンコードされたコロンの有無にかかわらず正常に動作しますが、きれいな URL があればいいと思い
/mycontroller/myaction/from-20091201 10:31/to-20091202 10:34
ましたが、IIS は URI のコロンが好きではないため、今では IIS の耳に恐怖を与えています。 Bad Request の応答。
私の質問は、そこに時間を維持できるようにするための推奨/標準的な行動方針は何ですか?
独自の日時形式を解析するには、カスタム ModelBinder を作成する必要がありますか? アクションは と の文字列を取りfrom
、to
カスタム形式で解析する必要があります"YYYYMMDD-HHmm"
。カスタム形式をどこかに指定できますか? もしそうならどこ?それとも、これを愚かなこととしてあきらめて、クエリ文字列パラメーターに固執する必要がありますか?
ああ、多くの人が RESTful URL について話しているのを目にします。私が読んだ限りでは、クエリ文字列が RESTful ではないということは何もありません。それは、既存の HTTP アクション タイプの適切な使用に関するものです。
asp.net-mvc - 入力モデルのプロパティに ModelBinder 属性を追加できません
入力モデルのプロパティに使用するモデル バインダーを指定したいと考えています。
ただし、ModelBinderAttribute をプロパティに適用することはできません。メソッドパラメーターに適用できるので、これはばかげているようです。この制限を回避するにはどうすればよいですか?
asp.net-mvc - ASP.NET MVC 2 でのカスタム モデル バインダーの単体テスト
ASP.NET MVC 2 を使用するプロジェクトでカスタム モデル バインダーを作成しました。このモデル バインダーは、モデルの 2 つのフィールドのみをバインドします。
標準の VS 単体テストを使用して、このモデル バインダーをテストするにはどうすればよいですか? グーグルで数時間を費やし、いくつかの例を見つけました(http://www.hanselman.com/blog/SplittingDateTimeUnitTestingASPNETMVCCustomModelBinders.aspx)が、この例はMVC1用であり、MVC2を使用している場合は機能しません.
私はあなたの助けに感謝します。
asp.net - 複数選択を使用したasp.net mvcの強く型付けされたビューモデル
MultiSelect ボックスからフォームの値を強く型付けされたビューにバインドする方法を知りたいです。
明らかに、フォームが送信されると、複数選択ボックスは、選択された値の区切り文字列を送信します...この値の文字列をオブジェクトのリストに変換して、モデルに添付して更新する最良の方法は何ですか?
コントローラー内でモデルを更新するとき、私は以下のように UpdateModel を使用しています:
ただし、何らかの方法で文字列から値をオブジェクトに戻す必要があります。
モデルバインダーと関係があると思いますが、これを行う方法の明確な例が見つかりません。
ありがとう!!ポール
asp.net-mvc - ViewModel を他の ViewModelBinders にバインドする
ビューモデル(HouseVMと呼びましょう)がありますが、その中に別のビューモデル(KitchenVM)が含まれています。KitchenVM 用のカスタム モデル バインダーは既に作成しています。今、HouseVM モデルバインダーを作成しています。HouseVM モデル バインダー内で KitchenVM に対して既に行ったモデル バインディングにアクセスするにはどうすればよいですか?
注:私はこの投稿を見ました
asp.net-mvc - ASP.NET MVC: 複数のモデル バインディング
このように、ある種のマルチバインダーを使用することは可能ですか?
私もこのようにデフォルトのバインダーを設定した場合:
私が望むのは、DataAnnotationsBinder (stringlength、regexps などのデータを検証する) と、さらにフィールド値を設定するカスタム バインダーの利点を得ることです。
EntitiyFramework を使用し、DataAnnotations と組み合わせて、次のようなコンストラクトになるため、このためにバインダーを 1 つだけ作成することはできません。
asp.net-mvc - ModelBinder を使用して、ユーザーに表示される値を修正するにはどうすればよいですか?
ユーザーに表示される値を修正する ASP.NET MVC のモデルバインダーを作成したいと考えています。たぶん、値の最初の文字を大文字にしたり、文字列をトリムしたりします。
この動作をモデルバインダー内にカプセル化したいと思います。
たとえば、これはTrimModelBinder
文字列をトリミングするための a です。(ここから取得)
これにより値がモデルに設定されますが、ページが再表示されると元の値が保持されます (ModelState にあるため)。
トリミングされた値をユーザーに再表示したいだけです。
などOnPropertyValidated
、オーバーライドするメソッドはたくさんあります。OnPropertyValidating
おそらく機能させることができますが、間違ったメソッドをオーバーライドした場合に意図しない副作用が発生することは望ましくありません。
ビューを生成しているときに、Trim() などのロジックを実行したくありません。このロジックをモデルバインダー内に完全にカプセル化したいと考えています。
asp.net-mvc - asp.net mvc:TryUpdateModelの戻り値またはModelState.IsValid?
バインダーで検証を行っているのですが、戻り値を確認する必要があるのではないかと思います。以下のオプション1では、ケース1とケース2に違いがありますか?TryUpdateModelがtrueを返す可能性はないようですが、ModelState.IsValidはfalseです。
オプション1:
オプション2:
asp.net-mvc - ASP.NET MVC 1.0 - 辞書のモデル バインダー
Dictionary (およびこの質問には関係のないもの) を含む ViewModel クラスがあります。
次に、辞書を扱うGET
/アクションがいくつかあります。POST
このGET
アクションは、最初Dictionary<int, string>
にデータベースからのデータを入力してから、次の値を返しますView
。
.Key
s は隠しフィールドになります。と.Value
s は、ユーザーが編集するためのテキストエリアになります。
ユーザーはこのフォームを送信し、アクションを呼び出しPOST
ます。入力を処理しようとします (プロセスは関係ありません)。Key
/Value
ペアの一部は有効で、一部は無効です。
無効なペアがある場合、アクションはViewModelPOST
を再構築しますが、今回はディクショナリに無効なペアのみを含める必要があり、ユーザーが修正して再送信できるように同じビューを再表示します。
質問:これを達成するための最も簡単でクリーンな方法は何ですか?
私がこれまでに持っているもの(正常に動作しています)、コントローラー:
そしてビュー:
問題は、モデル バインダーを喜ばせるために、ビューのフィールドに連続した ID を付けなければならないことです。ただし、ディクショナリを繰り返し処理してキーと値のペアを抽出する必要があるため、for (var i = 0; i < Model.Data.Count; i++) {...}
ループになることはありません。
asp.net-mvc - DDD に適した ASP.NET MVC モデル バインダー?
ドメイン層で定義された不変値オブジェクトをインスタンス化できるカスタム モデル バインダーの価値を検討しています。次に、それらをスタックに渡し、適切なエンティティに設定します。誰も試したことがありますか?運が良かった?ばかげた考えだと思いますか?