レンダリングにパラメータを挿入する手法がある場合、UserControl
に利用できるように、ページライフサイクルイベント(Page_Init、Page_Load )がレンダリング中に呼び出されます(HttpContext.Current.Server.Execute()
中)?特殊化されていない動的に作成されたUserControlへのパラメータ注入
このような手法は、動的レンダリングのために特殊化することなく、任意のUserControlにデータを注入できるようにします(リモートサービスへの呼び出しなど)。 ASPXページ上の静的コントロールと同じようにロードされます。このベースコード断片と
スタート:私は彼が彼のUserControls
のそれぞれにデータメンバを追加し、前にそのメンバーにデータソースを注入するためにリフレクションを使用しています@ScottGu ViewManagerの例を見てきました
Page page = new Page();
UserControl ctl = (UserControl)page.LoadControl(controlSpec);
page.Controls.Add(ctl);
// want to inject data into the control at this point
StringWriter writer = new StringWriter();
HttpContext.Current.Server.Execute(page, writer, true);
String renderedContent = writer.ToString();
return renderedContent;
コントロールはHTMLにレンダリングされます。
また、Stefan Sedich'sは@ScottGuの例を取ります。ここでは、同じことを可能にするが、反射の必要性を避ける一般的なViewManager<Control>
を派生させています。
たとえば、UserControl
をレンダリングする前に、Request
オブジェクトまたはHttpContext内のQueryString
にパラメータを追加できます。
あなたが示唆していることは、実行可能な解決策ですが、それは私には優しくないようです。さらに、私は避けようとしているUserControlを専門にする必要があります。 –