問題タブ [model-binders]

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

asp.net - ASP.NET MVCでカスタムモデルバインダーをテストする方法は?

ASP.NET MVCアプリケーションでいくつかのカスタムモデルバインダー(IModelBinderを実装)を作成しました。それら(バインダー)をユニットテストするための良いアプローチは何ですか?

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

asp.net - 複雑なタイプの検証を伴うAsp.netMVCモジュールバインディング

asp.net mvcでアンケートアプリを作成していますが、複雑なタイプのリストのモジュールバインダーで問題が発生しています。

まず、Questionnaire.IList <QuestionGroup>.IList<Question>オブジェクトグラフをバインダーで機能させることができません。したがって、以下のサンプルコードでは、1つのレベルのIListのみを使用しています。

2番目:クラスではなくリポジトリ/ファクトリをバインダーに渡したいのですが、そうすれば、フォームの質問とデータベースの質問の間のマッピングを省略して、1セットのオブジェクトで作業することができます。または、少なくともこのコードよりも少しきれいなもの;)。

誰かが私にとって正しい方向へのポインタを手に入れましたか?

コントローラー:

部分ビュー(メインビューはQuestionGroup内の質問に対してforeachを実行し、質問ごとにこのビューをレンダリングします)

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

asp.net-mvc - ASP.NET MVC - フォームおよびモデル バインダー内の複数のモデル

2 つのモデルを入力する必要があるフォームがあります。通常、フォームのポスト アクションで ModelBinderAttribute を使用します。

私のフォームでは、フィールドの名前はモデルのプロパティと同じです...

ただし、この場合、入力が必要な 2 つの異なるモデルがあります。

どうすればいいですか?何か案は?出来ますか?

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

asp.net-mvc - MVC質問のモデルバインダー

次のエラーが発生します。ディクショナリに渡されたモデルアイテムのタイプは「MvcWebApplication.Models.Product」ですが、このディクショナリにはタイプ「MvcWebApplication.ViewModels.ProductCommonViewModel」のモデルアイテムが必要です。

コントローラコードは次のとおりです。-

モデルバインダー:

製品クラス

私は何が間違っているのですか?

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

asp.net-mvc - MVCContrib グリッドとモデル バインダーによるポストバック

私の MVCContrib グリッドの内容は、強く型付けされたビューのモデルから取得されます。投稿が行われると、コントローラーに返されるときに、グリッドの内容はモデル オブジェクトにありません。これは、グリッドがセル内のテキストを含む単なるテーブルとしてレンダリングされるためであることがわかります。ポストが発生したときに、グリッドに送信したリスト データがポストに戻ってくるようにできることはありますか?

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

asp.net-mvc - ModelBinder で特定のデータ型のカスタム バインドを行う

DefaultModelBinder から継承し、XElement 型のプロパティを手動でバインドする独自のカスタム ModelBinder を作成中です。

次のように、「BindProperty」メソッドをオーバーライドする必要があるようです。

どのコードを使用する必要がありますか:

A) 投稿されたフォームの値からプロパティの値を取得しますか?

B) この値をプロパティに挿入しますか?

DefaultModelBinder クラスで Reflector を実行して動作を確認しようとしましたが、コードが非常にわかりにくいものでした。

以前にこれを行った人が必要です。

0 投票する
16 に答える
56314 参照

asp.net - データ入力後に文字列をトリミングする最良の方法。カスタム モデル バインダーを作成する必要がありますか?

ASP.NET MVC を使用していますが、ユーザーが入力したすべての文字列フィールドを、データベースに挿入する前にトリミングしたいと考えています。私は多くのデータ入力フォームを持っているので、ユーザーが指定したすべての文字列値を明示的にトリミングするのではなく、すべての文字列をトリミングするエレガントな方法を探しています。人々がいつ、どのように弦を整えているのか知りたいです。

カスタム モデル バインダーを作成し、そこにある文字列値をトリミングすることを考えました。そうすれば、すべてのトリミング ロジックが 1 か所に含まれます。これは良いアプローチですか?これを行うコード サンプルはありますか?

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

c# - カスタム検証属性を保持しながら、複雑なクラスをビューにバインドするにはどうすればよいですか?

私のプロジェクトでは、以下のサンプルのように、別のクラスを使用するモデル クラスがあります。モデル内のプロパティの 1 つは、子オブジェクトのプロパティのいずれかに検証を依存しています。このサンプルでは、​​LastName プロパティは、Address.PostalCode プロパティの値に検証を依存しています。LastName プロパティを検証するカスタム検証属性を実装しましたが、うまく機能します。

問題は、コントローラーで Address プロパティがビューから構築されず、常に null であることです。このサンプルでは、​​ビューで送信する内容に関係なく、user.Address は常に null です。ここにコントローラーコードがあります。

ビューは次のとおりです。

これを解決するために、次のようにビューのフィールドをモデルのプロパティにマップするカスタム ダミー バインダーを作成しました。

バインダーは正常に機能しますが、検証属性は機能しなくなりました。これよりもバインディングを行うためのより良い方法があるに違いないと思います。

このバインダーは、LastName を LastName に、Address.streetName を Address.streetName にマッピングしているだけです。この面倒なコードをすべて記述したり、カスタム検証メカニズムを壊したりせずに、これを達成する方法があるはずだと思います。