問題タブ [defaultmodelbinder]

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 投票する
3 に答える
2639 参照

asp.net - MVC 3の空のクエリ文字列パラメータ値は、nullではなく空の文字列としてバインドされます

私は次のものを持っています:

このアクション:

空のクエリ文字列パラメータを使用してこのURLから呼び出されます。

私の理解では、MVC 2の時点で、DefaultModelBinderはこれらの値をnullのままにします。しかし、私が見つけたのは、それらが実際には空の文字列に設定されているということです。これは実際に予想される動作ですか?これはどこかに文書化されていますか?

ありがとう

0 投票する
3 に答える
2138 参照

model-view-controller - how to pass another parameter from jquery ajax to mvc controller, along with form.serialize()

I use a jQuery plugin called jscroller, which uses jquery.ajax to make ajax calls. I need to pass in all parameters from a search form, and deliver them to mvc controller, and I think the best way is to put in 'data' field the following expr':

My problems is that I need to pass, along with the form values, a 'page' value which is being changed with each call.

How can I put the page value, along with the 'serialize' expression in 'data' field, or is there really another more efficient way to do it?

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

asp.net-mvc-3 - bindmodel vs createmodel asp mvc 3

Aspで最初のアプリケーションを開発しています。Asp.NETMVC3環境を使用しています。単一のパラメーターを持つコントローラーアクションがあります。このパラメーターのタイプは複雑なオブジェクトです。

ModelBinderクラスを使用しています。しかし、BindModel関数とCreateModel関数のどちらをオーバーライドする必要があるの​​わかりません。

これらの2つの関数の違いと、それらがルーターによって正確に使用される場合の違いは何ですか。

ありがとう !

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

asp.net-mvc-3 - Custom Model Binder から HTTP ステータス コードを返す方法

MEF コンテナーからインターフェイスの実装をプルするカスタム モデル バインダーがあります。次のように実装されます。

これは、MEF が petId のエクスポートを持っている場合はうまく機能しますが、エクスポートが存在しない場合は http ステータス 500 (サーバー エラー) を返します。エラー メッセージの難読化要件により、http ステータス 403 (禁止) が返される必要があります。

エラーをトラップし、応答ステータスを変更し、コンテンツを返さないか、この状態を処理するためにアクションを再ルーティングするにはどうすればよいですか?

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

asp.net-mvc-3 - アクションシグネチャでのオブジェクトバインダーの選択

セッションからデータを取得するためのカスタムモデルバインダーがありますが、デフォルトのバインダーを時々使用したいと思います。

UpdateModelを使用する代わりに、アクション署名でモデルバインダーを選択することは可能ですか?

ありがとう

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

c# - bindingContext.ModelNameは空ですか?

だから私はDarinDimitrovの答えを適用しようとしていますが、私の実装ではbindingContext.ModelNameは""に等しいです。

これが私のビューモデルです:

モデルタイプを投稿するビューの一部は次のとおりです。

そして、これが私のカスタムモデルバインダーです:

最後に、Global.asax.csの行:

ここでオーバーライドされた関数の内部で、デバッグモードでは、それが「」に等しいCreateModelことがわかります。bindingContext.ModelNameまた、typeValuenullであるため、CreateInstance関数は失敗します。

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

asp.net-mvc - 複雑なメンバーを含むリスト プロパティを持つ MVC ビュー モデル

次のようなモデルがあります

コントローラーのアクションが

デフォルトのモデルバインダーがタグからリストメンバーをマップできない理由を誰かが教えてもらえますか?

すべての値が選択されていることに注意してください。

一方、次の作品

正直に言うと、それが機能しない理由はわかっています:(なぜなら、selectの場合にhttpヘッダーを見ると、送信されたデータがデフォルトのモデルバインダーには不十分だからです。

送信されたデータが

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

c# - .NET MVC:モデルバインダーを取得してリストプロパティにnullを割り当てる方法は?

私は次のようなモデルを持っています:

モデルをパラメーターとして受け取るアクション メソッドにリクエストを送信しています。リクエストには、次のキーと値のペアが含まれています: " Items=" (i. e. Items=null。デフォルトのモデル バインダーは、アイテムを 1nullアイテムのリストに設定します。ここで、リスト プロパティ自体をnull(または少なくとも空に) します。

これを達成する方法はありますか?

明らかに、ある種のカスタム モデル バインディングを行うこともできますが、デフォルトのモデル バインダーを使用して機能するソリューションを好むでしょう (おそらく、要求のフォーマットを変更します)。

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

c# - asp.net MVC 4でバインダーをチェーンする方法は?

asp.net MVC で最初のモデル バインダーを作成しました。「fm_」で始まる名前を持つすべての入力を持つ純粋な HTML フォームから始めました。

デフォルトのバインダーは問題なく機能し、時間の節約になったと思います。

次に、よりクリーンなプロパティ名が必要だと判断したため、次のように変更しました。

モデル バインダー:

DateTime を解析してデフォルトのバインダーを取得する必要がないように、これを実装する方法はありますか?

:

フォーム入力名を希望のモデル名に合わせて変更できることはわかっていますが、モデルバインダーの作成経験を積むために意図的にそうしなかったため、この質問に至りました。

質問のタイトルは、私がやろうとしていることの概念的なアイデアに基づいています-次のようなチェーンを作成します:

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

asp.net-mvc - ポストバック時にプロパティを無視するように既定のモデル バインダーに指示する方法

だから私は自分のモデルにこの Fee 抽象クラスを持っています(データベースファーストを念頭に置いてEFによって生成されました)

さまざまな種類の料金をモデル化するために、他の多くのクラスに継承されます。たとえば、QuarterlyFee のようなものです。モデルには Customer クラスもあり、顧客はクラス CustomerRate によってモデル化されたカスタム料金を持つことができます。

顧客の詳細ページで、ユーザーがカスタム料金と標準料金を選択できるように、顧客の可能なすべての料金を表示しようとしています。

そして、可能性のある料金 (ICollection PossibleFees) を保持するために Customer クラスにプロパティを追加し、そのプロパティを Controller メソッド (public ActionResult Details(int id = 0)) に入力し、後で EditorTemplate を作成します。ユーザーが編集できる製品に応じて、顧客に発生する可能性のあるすべての料金。

ただし、ポストバック時に [保存] ボタンを押すと、Default Model Binder がその仕事を行い、PossibleFee の ICollection を設定しようとし、PossibleFee ごとに同じ名前のプロパティを設定するために Fee オブジェクトを作成しようとします。

もちろん、 Fee は抽象的であるため機能しません。問題はかなり単純です。ポストバックでは必要ないため、ポストバックでそのプロパティを無視するように DefaultModelBinder に指示するにはどうすればよいですか?

クラスPossibleFeeのPossibleFeeのEditorTenplateで必要なフィールドを単純に再コピーしたり、Feeからabstractを削除したりできることはわかっています。しかし、モデルに触れずに DefaultModelBinder をニーズに合わせて調整できるかどうかを知りたいです。

EDIT 2:私の意見では、Yarxはよりクリーンなソリューションを提供しました。以下の2つの投稿を参照してください

編集: まあ、Carlos Corral Carvajal はほぼ正しく、ModelBinder がオブジェクトを作成しようとした後にメソッド SetProperty が呼び出されるため、代わりに BindProperty を上書きする必要がありました。

誰かがそれを必要とする場合に備えて、カスタム属性を追加しました