問題タブ [custom-model-binder]
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 - ASP.NET Web フォームでカスタム モデル バインダーを作成するにはどうすればよいですか?
ASP.NET Web フォームを使用していますが、現在 ASP.NET MVC に移行できません。クライアント側の Ajax リクエストから渡された JSON データを取得し、リクエストされたページのアクション メソッドにデータを渡すカスタム IHttpHandler または HttpModule (どれかは不明) を MVC チームが実装した方法が気に入っています。
HTTP リクエストを傍受し、その JSON/「クエリ文字列パラメーター」を取得し、取得したデータをパラメーターとして渡しながら、ページでメソッドを呼び出したいと考えています。
現在、カスタムルートを実装しており、正常に動作しています。私にとって欠けている唯一の部分は、ASP.NET MVC で呼び出される「カスタム モデル バインダー」です。
どうすればそれを実行できるかについて、誰かが手がかりを手伝ってくれますか。
asp.net-mvc-3 - モデルバインドタグ集
このようなものにモデルバインダーを追加することは可能ですか?
asp.net-mvc - モデルの依存性注入
誰かが以前にこれを尋ねたと確信していますが、どこを見つけるのに苦労しています。
Ninject を使用して、リポジトリ デザイン パターンと共に、コントローラーから依存関係を削除しています。
私が理解しているように、このアプローチの利点の 1 つは、リポジトリとドメイン エンティティを簡単に切り離して、必要に応じて別のアセンブリを使用できることです。その結果、ドメイン エンティティとリポジトリを外部アセンブリに保持し、インターフェイスからすべての依存関係をモックできます。
ほとんどの場所でインターフェイスを使用してドメイン エンティティを参照できますが、モデル バインディングに関しては具象クラスへの参照を使用する必要があるようです。これは私が理解しているシリアライゼーションに関係していると読みましたが、ドメインエンティティを参照して別のモデルを作成することを避ける唯一の方法はありますか?
カスタム モデル バインディングでできることはありますか?
ちょっとした背景: 私は経験豊富な ASP.net 開発者ですが、MVC は初めてです。
asp.net-mvc-3 - リクエストのコンテキストに応じて異なるタイプのモデルを返すカスタム モデル バインダーを構築するにはどうすればよいですか?
コンテンツが異なる特定のアクションで (Facebook からのクレジット処理用の) 着信要求があるため、それを処理するための異なるモデル クラスがあります。
これは私の行動です:
そして、これは私のモデル バインダーです。
FacebookPaymentsGetItemsRequest
たとえば、着信変数「メソッド」が「payments_get_items」で、if メソッドが「payments_status_update」の場合にオブジェクトを作成したいのですFacebookPaymentsStatusUpdateRequest
が、bindingContext でモデルのタイプを変更する方法がわかりません。カスタムモデルバインダーでモデルのタイプを変更することはできますか?
他のアプローチ: BindModel でも試してみましたが、正しいオブジェクトを返すことができましたが、既定のモデル バインダーによって埋められていないため、すべてのプロパティが null です。
asp.net-mvc-3 - リストの非 Null 値のみをバインドするように MVC Model Binder を取得するにはどうすればよいですか?
この質問に続いて、MVCモデルバインダーに要素をリストにバインドさせる値がある場合にのみ要素をバインドする方法があるかどうか疑問に思っていました。たとえば、同じ名前の 3 つの入力を持つフォームがあり、1 つの値が入力されていない場合、3 つの要素を持つリストの MVC バインドを停止するにはどうすればよいですか?そのうちの 1 つが null です。
asp.net-mvc - バインドASP.NetMVCの子オブジェクトのモデルバインドが機能しないことを除外します
Asp.NetMVCのモデルバインディングで問題が発生しました。私は以下のようなビューモデルを持っています、
以下のアクションメソッドで見られるように、「Article」子オブジェクトのプロパティをバインドするモデルを除外しようとしています。
ただし、モデルバインダーは、上記の設定でもAbstractというプロパティにデータを入力します。
私が何か間違ったことをしている場合は私に知らせてください。モデルバインディングを行うときに、Article子オブジェクトの一部のプロパティを除外する必要があります。
asp.net-mvc - カスタム モデル バインダーがモデルを検証しない
ノックアウト js をいじり始め、その際に FromJsonAttribute (Steve Sanderson によって作成された) を使用しました。カスタム属性がモデル検証を実行しないという問題に遭遇しました。簡単な例をまとめてみましたが、コードが多すぎるように見えますが、基本的な問題は、カスタム モデル バインダー内でモデルの検証を強制する方法です。
ここに私のコントローラーがあります:
私の問題は、モデルが PostJson メソッドで常に有効であることです。完全を期すために、 FromJson 属性の Sanderson コードを次に示します。
asp.net-mvc-3 - インナーモデル用カスタムモデルバインダー
私はこのようなモデルを得ました:
TimePicker
次のような内部モデルです。
内部モデルのカスタム モデル バインディングを作成しようとしています。TimePicker
TimePicker
問題は、フォームでモデル フィールドに送信されたカスタム モデル バインダーの値を取得するにはどうすればよいかということです。
このように取得しようとすると:
私は入るだけnull
ですvalue
。
モデル バインダーを正しく実装する方法がわかりません。
asp.net-mvc-3 - カスタムモデルバインダーを使用した「IEntityChangeTrackerの複数のインスタンスでエンティティオブジェクトを参照することはできません」
コントローラーのスリム化に関する質問に対するDarinの回答をフォローしてきましたが、このIEntityChangeTracker
例外で問題が発生しています。
エンティティオブジェクトは、IEntityChangeTrackerの複数のインスタンスから参照することはできません。
これが私のモデルバインダーです:
この後、私のカスタムアクションフィルターは、投稿に対して少しの検証を実行し、投稿が有効でない場合はリダイレクトします。この時点まで、すべてが順調です。ポストリードカウントを更新しようとすると、コントローラーでエラーが発生します。
IEntityChangeTracker
私は事実上、同じオブジェクトを参照する2つのリポジトリになってしまい、それが起こるのを待っている悪いモジョのように見えるので、の不満を理解しています。PostVisited()
呼び出しをプッシュできることは知っていますPostModelBinder
が、モデルの更新はそこに属する動作のようには見えません。
これを回避する別の方法はありますか?
ありがとうございました。
asp.net-mvc-3 - バインド方法
input[type='text']
タイプのプロパティを持つフィールドにバインドする方法Subsidiary
ユーザーがパーティを登録するとき、フィールドの 1 つはパーティであった子会社です
DropDown、Select、または Rad
input[type='text']
タイプのプロパティを持つフィールドにバインドする方法Subsidiary
ユーザーがパーティを登録するとき、フィールドの 1 つはパーティであった子会社です
DropDown、Select、または Radio を配置する代わりに、input[type='text']
フィールドを配置し、ユーザーが子会社の名前を入力し始めると、jQueryUI のオートコンプリートにより、子会社のリストがフィルター処理されたことが示されます
コード
これらのタスクを達成するために、私は以下を持っています:
ビューモデル
HTML
EditorTemplates によって生成された HTMLSubsidiarySelect
#Subsidiary_Title
> 選択した子会社を表示するために使用されます
#Subsidiary
> 選択したコードを保存します 子会社のガイド
コントローラ
私のコントロールは特別なものではありません。クラスのプロパティがいっぱいにSubsidiary
なるPartyViewModel
ことを望みます。
質問
を作成してSubsidiaryBinder: IModelBinder
、投稿が作成されたときに、Subsidiary
プロパティにデータベースの値を入力することを考えました (ID も同様です)。
- これが解決策である場合、クラス PartyViewModel でのみ実行するバインダーを作成する方法
- 投稿時に
Subsidiary
プロパティ クラスの値をデータベースから自動的に取得するにはどうすればよいですか?PartyViewModel
ここで他の回答を要約すると、箇条書きとリスト項目内のテキストの間のスペースをより細かく制御したい場合は、<li>
次のオプションがあります。
(1) 背景画像を使用する:
利点:
- 箇条書きには任意の画像を使用できます
- CSS
background-position
を使用して、ピクセル、em、または % を使用して、テキストに対して必要な場所に画像を配置できます。
短所:
- 余分な (小さいながらも) 画像ファイルをページに追加し、ページの重量を増やします
- ユーザーがブラウザでテキスト サイズを大きくしても、箇条書きは元のサイズのままです。また、テキストサイズが大きくなるにつれて、位置がさらにずれてしまう可能性があります
- 幅のパーセンテージのみを使用して「レスポンシブ」レイアウトを開発している場合、画面幅の範囲で目的の場所に箇条書きを正確に配置するのは難しい場合があります。
<li>
2.タグにパディングを使用する
利点:
- 画像なし = ダウンロードするファイルが 1 つ少ない
- のパディングを調整することで、箇条書きとテキストの間に水平方向の余白を好きな
<li>
だけ追加できます。
- ユーザーがテキストのサイズを大きくした場合、間隔と箇条書きのサイズは比例して拡大縮小する必要があります
短所:
- ブラウザのデフォルトよりも箇条書きをテキストに近づけることはできません
- CSS の組み込みの箇条書きタイプの形状とサイズに限定されます
- 箇条書きはテキストと同じ色でなければなりません
- 弾丸の垂直位置を制御できない
(3)余分な<span>
要素でテキストをラップする
利点:
- 画像なし = ダウンロードするファイルが 1 つ少ない
- オプション (2) よりも箇条書きの位置をより細かく制御できます。箇条書きをテキストに近づけることができます (ただし、最善を尽くしても、に追加
padding-top
して垂直位置を変更することはできないようです<span>
。他の誰かが持っている可能性があります)。ただし、これに対する回避策...)
- 箇条書きはテキストとは異なる色にすることができます
- ユーザーがテキストのサイズを大きくすると、箇条書きはそれに比例して拡大縮小する必要があります (パディングとマージンを px ではなく ems で設定した場合)。
短所:
- 追加の意味不明な要素が必要です (これにより、SO では実際よりも多くの友人を失う可能性があります ;) しかし、自分のコードをできるだけ無駄のない効率的なものにしたい人にとっては迷惑であり、プレゼンテーションとコンテンツの分離に違反します。その HTML / CSS が提供することになっている)
- 弾丸のサイズと形状を制御できない
CSS4 に新しいリスト スタイルの機能が追加されることを期待しています。これにより、画像や追加のマークアップに頼らずに、よりスマートな箇条書きを作成できます :)
input[type='text']
タイプのプロパティを持つフィールドにバインドする方法Subsidiary
ユーザーがパーティを登録するとき、フィールドの 1 つはパーティであった子会社です
DropDown、Select、または Rad
input[type='text']
タイプのプロパティを持つフィールドにバインドする方法Subsidiary
ユーザーがパーティを登録するとき、フィールドの 1 つはパーティであった子会社です
DropDown、Select、または Radio を配置する代わりに、input[type='text']
フィールドを配置し、ユーザーが子会社の名前を入力し始めると、jQueryUI のオートコンプリートにより、子会社のリストがフィルター処理されたことが示されます
コード
これらのタスクを達成するために、私は以下を持っています:
ビューモデル
HTML
EditorTemplates によって生成された HTMLSubsidiarySelect
#Subsidiary_Title
> 選択した子会社を表示するために使用されます
#Subsidiary
> 選択したコードを保存します 子会社のガイド
コントローラ
私のコントロールは特別なものではありません。クラスのプロパティがいっぱいにSubsidiary
なるPartyViewModel
ことを望みます。
質問
を作成してSubsidiaryBinder: IModelBinder
、投稿が作成されたときに、Subsidiary
プロパティにデータベースの値を入力することを考えました (ID も同様です)。
- これが解決策である場合、クラス PartyViewModel でのみ実行するバインダーを作成する方法
- 投稿時に
Subsidiary
プロパティ クラスの値をデータベースから自動的に取得するにはどうすればよいですか?PartyViewModel
ここで他の回答を要約すると、箇条書きとリスト項目内のテキストの間のスペースをより細かく制御したい場合は、<li>
次のオプションがあります。
(1) 背景画像を使用する:
利点:
- 箇条書きには任意の画像を使用できます
- CSS
background-position
を使用して、ピクセル、em、または % を使用して、テキストに対して必要な場所に画像を配置できます。
短所:
- 余分な (小さいながらも) 画像ファイルをページに追加し、ページの重量を増やします
- ユーザーがブラウザでテキスト サイズを大きくしても、箇条書きは元のサイズのままです。また、テキストサイズが大きくなるにつれて、位置がさらにずれてしまう可能性があります
- 幅のパーセンテージのみを使用して「レスポンシブ」レイアウトを開発している場合、画面幅の範囲で目的の場所に箇条書きを正確に配置するのは難しい場合があります。
<li>
2.タグにパディングを使用する
利点:
- 画像なし = ダウンロードするファイルが 1 つ少ない
- のパディングを調整することで、箇条書きとテキストの間に水平方向の余白を好きな
<li>
だけ追加できます。 - ユーザーがテキストのサイズを大きくした場合、間隔と箇条書きのサイズは比例して拡大縮小する必要があります
短所:
- ブラウザのデフォルトよりも箇条書きをテキストに近づけることはできません
- CSS の組み込みの箇条書きタイプの形状とサイズに限定されます
- 箇条書きはテキストと同じ色でなければなりません
- 弾丸の垂直位置を制御できない
(3)余分な<span>
要素でテキストをラップする
利点:
- 画像なし = ダウンロードするファイルが 1 つ少ない
- オプション (2) よりも箇条書きの位置をより細かく制御できます。箇条書きをテキストに近づけることができます (ただし、最善を尽くしても、に追加
padding-top
して垂直位置を変更することはできないようです<span>
。他の誰かが持っている可能性があります)。ただし、これに対する回避策...) - 箇条書きはテキストとは異なる色にすることができます
- ユーザーがテキストのサイズを大きくすると、箇条書きはそれに比例して拡大縮小する必要があります (パディングとマージンを px ではなく ems で設定した場合)。
短所:
- 追加の意味不明な要素が必要です (これにより、SO では実際よりも多くの友人を失う可能性があります ;) しかし、自分のコードをできるだけ無駄のない効率的なものにしたい人にとっては迷惑であり、プレゼンテーションとコンテンツの分離に違反します。その HTML / CSS が提供することになっている)
- 弾丸のサイズと形状を制御できない
CSS4 に新しいリスト スタイルの機能が追加されることを期待しています。これにより、画像や追加のマークアップに頼らずに、よりスマートな箇条書きを作成できます :)