問題タブ [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.

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

asp.net-mvc - 複雑な複合オブジェクトのカスタム モデル バインダー HELP

カスタム モデル バインダーを作成しようとしていますが、複雑な複合オブジェクトをバインドする方法を理解するのが非常に困難です。

これは私がバインドしようとしているクラスです:

これは、カスタムバインダーを作成しようとする私の試みがどのように見えるかです:

何か案は

ありがとうトニー

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

asp.net-mvc - 標準のASP.NETMVCModelBinderのドキュメントはどこにありますか?

特にコレクションを含む複雑なオブジェクトのバインドに関して、ASP.NET MVCの標準モデルバインダーの機能に関する信頼できる最新の(つまり、1.0の最終版の)ドキュメントを見つけることができないようです(およびこれがHTMLフォームに課す命名要件)

Phil Haack( http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx )からのブログ投稿を見つけましたが、上部に「古く、更新されます。ここにも有用な答えがありました:複雑な複合オブジェクト用のカスタムモデルバインダーヘルプですが、彼がそのことをどのように知っているのか理解できませんでした。

このページ:http : //www.asp.net/learn/mvc/#MVC_ActionFiltersのタイトルは「アクションフィルターとモデルバインダー」ですが、フィルターに関する情報が含まれているのは実際のものだけです。

ソースを読んだり、新しい「Gang of Foreheads」の本を購入したりすることになりますか(そして、過去に購入を間違えた他のWroxの本よりも優れていることを願っています)?それとも、どこかで良いリファレンスを見逃したことがありますか?

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

c# - リストを受け入れることは可能ですかAsp.Net MVC のチェックボックスのパラメータとして?

haacked のおかげでオブジェクトのリストをパラメーターとして受け入れることができることはわかっていますが、チェックボックスからの Guid のリストはどうですか? 取得する唯一の名前は ID でなければならないため、これは少し異なります。

どんな助けでも大歓迎です、ありがとう!

0 投票する
4 に答える
18512 参照

asp.net-mvc - パラメータがModelの場合、ASP.NETMVCはファイルモデルバインディングを投稿しました

カスタムモデルバインダーで要求コンテキストを手動で確認したり、投稿されたファイルのみを入力として受け取る別のアクションメソッドを作成したりせずに、投稿されたファイル(<input type="file" />)をASP.NET MVCのモデルバインディングに参加させる方法はありますか?

私はこれがうまくいくと思っていたでしょう:

しかし、上記のシナリオを考えるMyFileと、バインディングコンテキストの値プロバイダー値の一部でさえありません。OtherPropertyもちろんです。)しかし、これを行うと機能します。

では、パラメーターがモデルの場合、なぜバインディングが発生しないのでしょうか。また、どうすればそれを機能させることができますか?カスタムモデルバインダーを使用しても問題はありませんが、カスタムモデルバインダーでこれを確認せずに行うにはどうすればよいRequest.Files["MyFile"]ですか?

一貫性、明確性、テスト容易性のために、リクエストコンテキストを手動で検査することなく、投稿されたファイルにバインドされたプロパティを含む、モデル上のすべてのプロパティの自動バインドをコードで提供したいと思います。私は現在、ScottHanselmanが書いたアプローチを使用してモデルバインディングをテストしています。

それとも私はこれを間違った方法で行っていますか?これをどのように解決しますか?または、Request.FormとRequest.Filesの分離の歴史があるため、これは設計上不可能ですか?

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

asp.net-mvc - ASP.NETMVC-カスタムモデルとデフォルトモデルのバインドの混合

私はタイプを持っています:

OrderとItemの要件のためにカスタムモデルバインダーを作成しましたが、Rangeは引き続きデフォルトモデルバインダーを使用できます。

カスタムモデルバインダー内からデフォルトのモデルバインダーを呼び出してRangeオブジェクトを返す方法はありますか?ModelBindingContextを正しく設定するだけでよいと思いますが、その方法がわかりません。


編集

最初のコメントと回答を見ると、デフォルトのモデルバインダーから継承すると便利なようです。

これまでのセットアップの詳細を追加するには、次のようにします。

これは愚かなやり方かもしれません...これは私の最初のモデルバインダーです。私の現在の実装を指摘するだけです。


編集#2

したがって、BindPropertyをオーバーライドするための答えは、「バインドがすべて完了しました」メソッドのようにフックして、プロパティを使用してFactoryメソッドを呼び出すことができれば機能します。

私は本当にDefaultModelBinderの実装を見て、愚かであることをやめるべきだと思います。

0 投票する
4 に答える
994 参照

asp.net-mvc - ASP.NET MVC:フォームPOSTをパラメーターにバインドするときに密結合を回避する

私が次のようなインターフェースを持っているとしましょう:

そして、ASP.NET MVCには、次のようなコントローラーアクションに投稿するフォームがあります。

SimpleThingは、 IThingをほとんど実装しない具象クラスです

ただし、すべてのメソッドでインターフェイスを処理する必要があります。NHiberateと独自のIThing実装(RealThingと呼びましょうを使用するデータアセンブリがあります。SimpleThingは「不明なエンティティ」について文句を言うので、渡すことができません。

誰かがこれを行うためのよりクリーンな方法について何かアイデアがありますか?ファクトリクラスを使って何かを考えていました。しかし、MVCフォームバインダーでそれを使用するにはどうすればよいですか?

ありがとう!

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

asp.net-mvc - Moqを使用してカスタムModelBinderをユニットテストする方法は?

作成したカスタムModelBinderをテストするためのユニットテストを作成するのに問題があります。私がユニットテストしようとしているModelBinderは、ここに投稿したJsonDictionaryModelBinderです。

私が抱えている問題は、Moqを使用してすべてのモックを設定することです。HttpContextBaseが正しくモックされていないため、Null例外が発生し続けます。おもう。

誰かが私が正しくやっていないことを理解するのを手伝ってもらえますか?

これが私が書き込もうとしているユニットテストのサンプルですが、機能しません:

上記で使用した「FakeHttpContext」メソッドは次のとおりです。

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

asp.net-mvc - ASP.NET MVC: ModelState エラーなしで空白文字列から数値型をバインドする

decimalテキスト ボックスの形式でユーザーに公開されるプロパティを含むかなり複雑な ViewModel があります。値のないテキストボックスをゼロとして解釈したい。(基になるドメイン オブジェクトのプロパティは null 非許容であり、既定値は 0 です。)

がビュー データを ViewModelにDefaultModelBinderバインドすると、入力の空白文字列を持つ 10 進プロパティはゼロに初期化されますが (.NET の標準)、DefaultModelBinder空白テキスト ボックスの ModelState にエラーが追加されます。その結果、ModelState が無効になり、ユーザーには「値が必要です」というメッセージが大量に表示されます。空白のままにしたテキストボックスのエラー。

これらのエラーが ModelState に追加されないようにするにはどうすればよいですか?