ASP.NET MVC ビューで外部のコンポーザブル パーツをサポートするにはどうすればよいでしょうか?
これはどういう意味ですか?「すべてのページのログイン ボックス」または「iGoogle」のいずれかを考えてください。各コントローラー/ビューの外部にある特定の場所にある必要があるものです。
これに対する 1 つのアプローチは、次のようにビューにコンポーネントを追加することです。
<% foreach (var component in GetComponents()) {%>
<%= Html.RenderPartial(component.ViewName, component.ViewData)%>
<%} %>
上記の例では、表示されるビューのコントローラーではなく、各コンポーネントのコントローラーによってビュー名とビューデータを配信する良い方法を探しています。あなたが提案できるまったく異なる解決策も興味深いでしょう。フィルター、Web フォームなど。
更新:例を使用して、頭を包み込もうとしていることを説明しようと思います。ログイン機能を選択します。
典型的な Web フォーム アプリケーションでは、これは、ページのライフ サイクルのロード イベントで適切なデータを取得し、いくつかの UI コントロールを更新するユーザー コントロールである可能性があります。クリックすると、ページがポストバックされ、同じユーザー コントロールのクリック イベントでポストされた情報に基づいて行動できます。
ASP.NET MVC スタイルに関する私の現在の理解では、最初に要求を受け入れるコントローラーが適切なデータを取得し、それをビューに渡します。ビューはそれをログイン部分ビューに渡します。ログインビューは、投稿アクションがログインコントローラーのログインアクションに向けられるフォームを定義します。投稿された情報はlogin アクションによって使用され、気の利いたスキームを使用して元のコントローラーにリクエストを渡すことを選択できます。
ビュー/マスターページにコントローラーロジックを配置する必要のない、上記よりもスマートなアプローチがあると思います。