[ASP.NET]取得WebControl的Html字串
有朋友在問如何取得WebControl的Html字串,
WebControl.RenderControl 方法 接收一個HtmlTextWriter型別的參數,
所以可以傳給HtmlTextWriter一個StringWriter,這樣就可以取得WebControl的Html字串了,如下我取得WebPage中DropDownList1控制項的Html字串,
{
using (HtmlTextWriter htw = new HtmlTextWriter(sw))
{
DropDownList1.RenderControl(htw);
}
string html = sw.ToString();
}
另外,在呼叫 WebControl.RenderControl 方法 時,有可能會發生 「型別 'DropDownList' 的控制項 'DropDownList1' 必須置於有 runat=server 的表單標記之中。」 的錯誤,
那是因為在Control在Render時,會呼叫 Page.VerifyRenderingInServerForm 方法 檢查看看Control是否在 <form runat=server> 標記以內,
可以覆寫 VerifyRenderingInServerForm ,讓它不要檢查,如下,
{
//避免 型別 'xxx' 的控制項 'xxx' 必須置於有 runat=server 的表單標記之中。 的錯誤
//所以不要檢查
}
另外,如果出現「RegisterForEventValidation 只能在 Render(); 期間呼叫」的錯誤,請設定 EnableEventValidation="false" 。 如下,
<%@ Page Language="C#" EnableEventValidation="false" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication2.WebForm1" Trace="true" %>
參考資料
Getting the content of an ASP.NET System.Web.UI.WebControls.PlaceHolder
Hi,
亂馬客Blog已移到了 「亂馬客 : Re:從零開始的軟體開發生活」
請大家繼續支持 ^_^