ASP.NET MVCのユーザーコントロール
-
18-09-2019 - |
質問
私はMVCを愛していますが、ユーザーコントロールを実装するつもりの意図を理解することができません。ショッピングバスケットの詳細を備えた複数のビューがある場合、ショッピングバスケットビューとコードをどのように取り入れることができますか。
解決
バスケットユーザーコントロールを使用するビューを返す各コントローラーアクションのバスケットデータを返す必要があります。ただし、ここではコードの繰り返しを避ける方法があります。 Onaxctustctionexectedイベントで適切なデータを挿入するカスタムActionFilterAttributeでアクションメソッドを飾ることができます。または、ベースコントローラーの初期化メソッドのViewData辞書にバスケットデータを追加して、ViewData ["Magic-String]]でコントロールでアクセスするか、作成するか、作成できます。魔法の文字列を避けるためのhtmlhelperの拡張方法。
他のヒント
から これ MSDNページ:
部分的なビューを使用すると、親ビュー内でレンダリングされるビューを定義できます。部分的なビューは、ASP.NETユーザーコントロール(.ASCX)として実装されています。
部分的なビューでショッピングカートビューを書き留めてください。ビューページ内で、あなたは呼び出します Html.RenderPartial("PartialNameHere")
これをページ上のあらゆる場所にレンダリングしました。ビューと同様に、選択したタイプのモデルを渡すことができるように、強くタイプの部分的なビューを持つことができます。
次のことに注意してください(上記のMSDNリンクからも、強調鉱山):
部分的なビューがインスタンス化されると、 自分の 親ビューが使用できるViewDataDictionaryオブジェクトのコピー。したがって、部分的なビューは、親ビューのデータにアクセスできます。ただし、部分ビューがデータを更新する場合、それらの更新は部分ビューのViewDataオブジェクトのみに影響します。親ビューのデータはです いいえ かわった。
他の答えはまったく正しいですが、2番目のオプションがあります。部分的なビューに特化したコントローラーアクションへのAJAXコールの結果として、部分的なビューをレンダリングできます。そうすれば、あなたの部分的な見解は、それが気にかけているデータだけを持っているモデルを扱わなければなりません。