ASP.NET

ASP.NETによるWebページの部分レンダリング

ASP.NETでHTMLを描画する場合、ページ全体ではなく、部分的にHTMLを描画したい場合がある。

手っ取り早くはやるには、Response.Write()で叩けばいいのだけど、これだと、せっかくのASPXテンプレートなんかが使えない。

そこで、ASP.NET Cookbookなんかを参考に、部分的にページをレンダリングするコードを書いてみた。

<%@ Page Language="VB" CodeFile="test.aspx.vb" Inherits="PartialRendering_test" %>
<html>
<head runat="server">
    <title>パ^シャルレンダのテスト</title>
</head>
<body>
    <form id="form1" runat="server">
    ここは出力されるとまずいんですぅ。
    <div id="cDiv" runat="server">
  ここだけ出力されてればOKなんですぅ。   
    </div>
    </form>
</body>
</html>

裏コードはこんな感じ

private sub PartialRender()
 dim oStb as new StringBuilder
 dim oWriter as New System.IO.StringWriter(oStb)
 dim oHtmlWriter as new HtmlTextWriter(oWriter)
 me.cDiv.RenderControl(oHtmlWriter)
 Response.Write(oStb.ToString())
  Response.End()
end sub

要するに、StringBuilder -> StringWriter -> HtmlTextWriterと三重にラップしておいて、ページ(あるいはコントロール)のRenderControlを呼び、ラップ元のStringBuilder.ToString()を吐けば、htmlが生成されるリクツである。
ファイルに保存してよし、作成のようにResponseに吐いてよし。けっこう使えます。

≪Archives一覧へ戻る