取得ASP.NET控制項所產生的HTML

這是網友在藍色小鋪發問的內容,版主hunterpo給了一段很棒的範例程式碼,但C#的語法,我實在「沒法Do(台)」,所以就自己動手轉Code一下,貼在這裡留個記錄。

Default.aspx

01>form id="form1" runat="server">
02  <div>
03  <asp:panel id="Panel1" runat="server">
04    PANEL 測試內容。
05    <asp:button id="Button1" runat="server" text="Button" />
06  </asp:panel>
07  <div id="div1" runat="server">
08    DIV 測試內容。
09    <asp:button id="Button2" runat="server" text="Button" />
10  </div>
11  <asp:literal id="Literal1" runat="server">>/asp:literal>
12</form>

Default.aspx.vb


需要先「Imports System.IO」命名;
01''' <summary>
02    ''' 取得控制項輸出的 HTML
03    ''' </summary>
04    ''' <param name="control">目標控制項</param>
05    Private Function GetHtmlText(ByVal control As Control) As String
06        Dim sw As New StringWriter
07        Dim hw As New HtmlTextWriter(sw)
08 
09        control.RenderControl(hw)
10        hw.Flush()
11 
12        Return sw.ToString()
13    End Function
14 
15    Public Overrides Sub VerifyRenderingInServerForm(ByVal control As System.Web.UI.Control)
16        '覆寫以取消驗證控制項必須出現在 form 的開頭和結尾標記之間。
17        'MyBase.VerifyRenderingInServerForm(control)
18    End Sub
19 
20    Protected Sub Page_PreInit(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreInit
21        EnableEventValidation = False
22    End Sub
23 
24    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
25        Dim p As String = GetHtmlText(Panel1)
26        Dim d = GetHtmlText(div1)
27 
28        Literal1.Text = "Panel:" & Server.HtmlEncode(p) & "
29" & "div:" & Server.HtmlEncode(d)
30    End Sub

重點在GetHtmlText方法上,System.IO是我比較少用的類別,順便學習一下。

沒有留言:

張貼留言

感謝您的留言,如果我的文章你喜歡或對你有幫助,按個「讚」或「分享」它,我會很高興的。