問題タブ [imodelbinder]

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 に答える
2346 参照

asp.net-mvc - IModelBinderおよびASP.NETMVCベータ版

誰かがasp.netmvcベータ版の新しいIModelBinderに関するチュートリアルへのリンクを持っていますか?

きちんと頭を回せないので、大きく変わりました。

ありがとう

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

asp.net-mvc - カスタム IModelBinder とデータベース アクセス

私のasp.net mvcプロジェクトのユーザーオブジェクトについて、パスワードが有効かどうか、2つの一致するパスワードが入力されたかどうかなどを確認するカスタムモデルバインダーを作成しました.

ログイン名は一意である必要がありますが、モデルバインダーでそれを確認できるかどうか疑問に思っていましたか、それともこれは悪い習慣と見なされていますか?

問題は、コントローラーに到達する前にバインダーが呼び出されることです。そのため、dataContext の 2 つのインスタンスが浮かび上がり、データベースへの複数の接続が発生します。そのための種類のファクトリを設定できると思います。

これは、コントローラーで現在行っていることのコード スニペットです。

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

asp.net-mvc - セッションに保存されたオブジェクト用に Sanderson のカスタム mvc ModelBinder を拡張する

Steven Sanderson は、彼の素晴らしい MVC の本で、セッション変数を設定および取得するカスタム モデル バインダーの例を示し、コントローラーからデータ ストレージ要素を隠します。

これを拡張して、かなり一般的なシナリオに対応しようとしています。セッションに User オブジェクトを保存し、これをすべてのアクション メソッドでパラメーターとして使用できるようにしています。ユーザーの詳細が変更されていない場合、サンダーソンのクラスは正常に機能しましたが、ユーザーが詳細を編集し、修正されたオブジェクトをセッションに保存できるようにする必要があります。

私の問題は、bindingContext.ValueProvider.Keys のキーの数を確認する以外に、GET と POST を区別する方法が見つからないことです。これは間違っているようで、何かを誤解していると確信しています。

誰かが私を正しい方向に向けることができますか? 基本的に、すべてのアクションは現在のユーザーにアクセスする必要があり、UpdateMyDetails アクションは同じオブジェクトを更新する必要があり、すべてセッションによってサポートされます。これが私のコードです...

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

asp.net-mvc - IModelBinder を実装する際のベスト プラクティス

を実装する際に使用する一連のベスト プラクティスを探していますIModelBinder

私は 3 つの異なる MVC の本を読みましたが、実際の説明がなくても、それぞれの実装でわずかに異なることを行っています。

  • ヘンゼルマン、ハーク、ガスリー、コネリーの本は言及さえしていませんIModelBinder
  • PalermoDefaultModelBinderは を直接実装するよりも拡張することを推奨IModelBinderしていますが、その利点を活用する方法がよくわかりません。
  • Sanderson は、既存の Model インスタンスを更新すること、およびModelState.SetModelValue()規則に従うように呼び出すことについて言及しています。

モデル バインダーが規則に従っていること、および全体を正しく理解していることを確認したいだけですModelBindingContext

推奨するヒント、トリック、良いチュートリアルはありますか?

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

asp.net-mvc-2 - MVC 2、IModelBinder および ValueProvider の変更

ASP.Net MVC 2 に移行していくつかの問題を解決しようとしています。ここに 1 つあります。ビュー ポストの結果として、 Dictionaryを直接バインドする必要がありました。

ASP.Net MVC 1 では、カスタムIModelBinderを使用して完全に機能しました。

データの辞書を表示するいくつかのスマートな HtmlBuilder とペアで動作しました。

私が今直面している問題は、ValueProviderが Dictionary<> ではなく、名前がわかっている値のみを取得できる IValueProvider であることです。

スマートな解析を実行できないため、これは本当にクールではありません...

質問 :

  1. すべてのキーを取得する別の方法はありますか?
  2. HTML 要素のコレクションを Dictionary にバインドする別の方法を知っていますか?

ご提案いただきありがとうございます

O.

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

asp.net-mvc - ASP.NET MVC - 配列を処理できるカスタム モデル バインダー

ユーザーが任意の形式で価格を入力できるようにする機能を実装する必要があります。つまり、入力として 10 米ドル、10 ドル、10 ドルなどを許可する必要があります。

Price クラスのカスタム モデル バインダーを実装することで、これを解決したいと考えています。

フォームには配列または Price がキーとして含まれています

ViewModel には Price プロパティが含まれています。

デフォルトのモデル バインダーは、ユーザーが 10 進数に変換可能な文字列を [値] 入力に入力する限り、うまく機能します。「100 USD」のような入力を許可したいと思います。

これまでの価格タイプの私のModelBinder:

配列を正しく処理するカスタム モデル Binder を実装するにはどうすればよいですか?

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

asp.net-mvc - カスタム ModelBinder 内から UpdateModel を呼び出すにはどうすればよいですか? (MVC)

モデルの複合型用にいくつかのカスタム バインダーを作成しています。私のモデルは、独自の個別のバインダーを持つオブジェクトで構成されています。基本オブジェクトに汚い仕事をさせてから、標準の ModelBinder ルーティングに渡すことによって、カプセル化された複雑なオブジェクトを設定します。どうすればいいですか?

説明のために、非常に単純な例を作成しました。

モデルにこれらのオブジェクトが含まれているとします。

そして、これらのモデルごとに次のバインダーがあります。PersonBinder が PhoneNumber を設定する必要があるわけではありませんが、PhoneNumber バインダーでコードを複製したくありません。標準の Binder ルーティングに戻すには、どのように委任しますか?

そしてもちろん、ModelBinders を Global.asax.cs ファイルに登録しました。

ありがとう、

ジャスティン

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

asp.net-mvc-2 - Asp.net MVC2 IModelBinderは私を狂わせようとしています(そして成功しています)

私が持っているとしましょう

このBarClassは、ViewPageに渡すモデルです。

また、(ViewDataを介して)IEnumerable<SelectListItem>すべてのFooを含むを渡し、それに一致するものbar.Fooを選択します(実行時にチェックされます)。

私はそれから呼んでいますHtml.DropDownList("Foo", foos);

ドロップダウンリストは適切にレンダリングされますが、htmlコントロールにプロパティの名前があり、ViewData.Eval()内部で実行されるを混乱させるため、適切なアイテムが選択されません。それは受け入れられた振る舞いのようです(SOでそれについて多くの答えを見ました)ので、私はそれについて議論しておらず、拡張機能への呼び出しを次のように変更します:

適切な値が選択され、私は満足しています。だから私はフォームを送り返します。

悲しいことに、私のコントローラーの適切なアクションでは、Fooメンバーはnullです。そこで、フォームのDDL_Fooをインターセプトし、FooClassを適切に初期化するためのFooModelBinder実装を追加します。IModelBinder

しかし、FooModelBinder.BindModel決して解雇さbar.Fooれることはなく、nullです。ビューを再度変更し、ドロップダウンリストの名前をFooに戻すと、FooModelBinderが期待どおりに起動し、bar.Fooが正常に初期化されます。

それで、私は何を逃しましたか?そしてもっと重要なのは、それを適切な方法でどのように行うべきかということです。私はたくさんのハックとその回避策を考え出しましたが、それは私が探しているものではありません。私はそれを正しく行う方法を知りたいです。

ありがとうございました!

[編集] フィードバックありがとうございますが、プレフィックスが問題になるとは思いません。

バインダーについては、正しく初期化できないので追加しました。私が取り組んでいる実際のケースは、ここに示されているものよりもはるかに複雑であることに注意してください。このソリューションは、問題を再現するために実行できる最小のモックアップです。

ここでそれは尋ねられた啓示的なコードです(または完全な解決策をダウンロードしてください):

コントローラ

見る

モデル

GLOBAL.ASAX

[編集] codeplexには未解決の問題があります。解決したい場合は、投票してください(1年近く開いていたとしても)。

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

asp.net-mvc - カスタム モデル バインダー内でモデルの検証を自動的にトリガーできますか?

フォームからバインドする複雑なオブジェクトがあります。モデル バインダーは次のようになります。

そして、それは本来あるべきことをしています。そこから正しく入力MyFormされ、同じ MyForm インスタンスへの参照が ModelState に含まれています。DataAnnotationsただし、フォームはまたは my検証を使用して検証されませんCustomValidation。その検証を行うにTryValidateModel()は、コントローラーに呼び出しを追加する必要があります。

カスタム検証を呼び出すだけでなく、ModelState.IsValid の値も更新します。

タイトルの質問に加えて、これによりいくつかの質問が発生します。

  1. 正しく検証されるフォームの同じインスタンスへの参照があるのにTryValidateModel(ModelState)、フォームを検証しないのはなぜですか?ModelStateTryValidateModel(form)

  2. TryValidateModel(form)の値ModelState.IsValidが更新されるのはなぜですか?

  3. 一般に、なぜバインダーが更新を担当するのModelStateですか?

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

asp.net-mvc-3 - mvc3 IModelBinder と URL

次の形式の URL で iModelBinder を使用すると問題が発生します

http://localhost/controller/action/id/value

アクションは、ID /値がつまり、コントローラー内の関数になります。ID=12

上記のリンクを試すと、見つからない 404 エラー ページが表示され、スタックを見ると、MVC が理解できないパスを探していることがわかります。

以下の作品を使用

http://localhost/controller/action?id=値

この問題を解決できるかどうか誰かが考えている場合は、区切り記号として「/」を使用できるようにしたいと思います。

ヴィンス