2

ViewPage内にViewPageをレンダリングできるかどうか疑問に思っています。

通常、あなたはこれを持っているでしょう:

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<my_object>"%>

次に、ページでユーザーコントロールをレンダリングできます。

<%Html.RenderPartial("~/Views/Shared/mycontrol.ascx", this.ViewData);%>

ただし、ViewPageをViewPageでレンダリングしたいと思います。理由?私は10人以上の開発者と多くのコードがすでに書かれている非常に大規模なプロジェクトに取り組んでいます。UIを動的にレンダリングする大きな部分がすでに作成されていますが、ViewPageを渡す15以上のメソッドがあります。

言い換えれば、私はこれをViewPageで呼んでいます:

<%this.RenderUI();

そして、メソッドスタブは次のとおりです。

public static void RenderUI(this ViewPage viewPage)

したがって、ほとんどのコードを再利用するために、this.RenderUI()の呼び出しを独自のViewPageにプルしますが、それを一部のViewPageに含めます。これは厄介な状況であり、不要に聞こえますが、それ以外の場合に実行する必要のあるコードのやり直しがたくさんあります。これが達成できるかどうか誰かが知っていますか?

4

1 に答える 1

1

RenderAction()の代わりにを使用して、メインビューでサブビューをレンダリングしますRenderPartial()。これにより、各サブビューのコントローラーとビューを保持し、メインビュー内の選択した場所で、各コントローラー/サブビューの組み合わせの出力を任意のメインビューに「注入」できます。

この配置により、各ビューとサブビューの管理の複雑さが緩和されます。これは、従来のASP.NETまたはSharePointの「Webパーツ」を彷彿とさせるアプローチです。これは、より優れた再利用性を提供する、よりモジュール化されたアプローチです。

于 2010-02-18T22:55:46.817 に答える