我有任何ASP.NET控件。我想要HTML字符串如何獲得控件的HTML字符串?ASP.NET如何將控件呈現爲HTML?
26
A
回答
39
這似乎工作。
public string RenderControlToHtml(Control ControlToRender)
{
System.Text.StringBuilder sb = new System.Text.StringBuilder();
System.IO.StringWriter stWriter = new System.IO.StringWriter(sb);
System.Web.UI.HtmlTextWriter htmlWriter = new System.Web.UI.HtmlTextWriter(stWriter);
ControlToRender.RenderControl(htmlWriter);
return sb.ToString();
}
6
如果你的控制是一個網絡用戶的控制,這是你可以得到它從另一個頁面或處理程序發出的HTML:
public void GetHtmlFromMySweetControl(HttpContext context)
{
HttpRequest httpRequest = context.Request;
HttpResponse httpResponse = context.Response;
string foo = httpRequest["foo"];
Page pageHolder = new Page();
string path = "~/usercontrols/MySweetControl.ascx";
MySweetControl ctrl = (MySweetControl)pageHolder.LoadControl(path);
ctrl.BindProducts(foo);
pageHolder.Controls.Add(ctrl);
StringWriter sw = new StringWriter();
context.Server.Execute(pageHolder, sw, false);
httpResponse.Write(sw.ToString());
}
6
通過
David Basarab
接受的答案是行不通的,如果控制不是頁面的一部分。 a7drew
的答案似乎不必要複雜 - 無需在Context
或Server.Execute
。
private string RenderControl()
{
var sb = new System.Text.StringBuilder();
using (var stWriter = new System.IO.StringWriter(sb))
using (var htmlWriter = new HtmlTextWriter(stWriter))
{
var p = new Page();
var ctrl = (YourControl)p.LoadControl("~/controls/building blocks/YourControl.ascx");
ctrl.Visible = true;
// do your own init logic if needed
p.Controls.Add(ctrl);
ctrl.RenderControl(htmlWriter);
return sb.ToString();
}
}
相關問題
- 1. 如何將HTML呈現給asp.net頁面?
- 2. 如何呈現ASP.NET MVC ViewResult爲HTML?
- 3. 你可以給任何未呈現爲html的asp.net控件嗎?
- 4. 如何將HTML呈現爲jQuery.tmpl()中呈現的HTML?
- 5. 將ASP.NET控件呈現爲HTML字符串將不會呈現選定的事件
- 6. 如何檢索ASP.NET中控件的呈現html?
- 7. 服務器端ASP.net控件呈現爲HTML TextArea
- 8. 如何將控件呈現給圖像?
- 9. 如何將控件呈現的HTML寫入字符串
- 10. 如何呈現html文件
- 11. 按鈕呈現時呈現HTML/ASP.NET
- 12. 將html呈現爲pdf
- 13. 將HTML呈現爲PNG/JPEG
- 14. 將HTML呈現爲TIFF
- 15. Mustachejs將html標記呈現爲html
- 16. 如何將HTML呈現爲反應組件
- 17. 如何使用Node將ReactJS組件呈現爲HTML字符串?
- 18. 如何將呈現視圖導出爲HTML文件
- 19. ASP.net MVC呈現html頁面
- 20. 使用參數呈現ascx控件並在asp.net中插入html?
- 21. ASP.NET - 訪問FormView控件的最終呈現HTML
- 22. Asp.net控件是否會根據客戶端呈現HTML?
- 23. 動態呈現Asp.net服務器控件
- 24. ASP.NET自定義控件取消呈現
- 25. 呈現html的文本控件
- 26. 將如何獲取HTML字符串中呈現爲html
- 27. 如何在python中將JavaScript HTML呈現爲HTML?
- 28. ASP.NET將原始HTML解析爲控件
- 29. 將Asp.net控件轉換爲HTML
- 30. ASP.NET:將DataTable呈現爲字符串(HTML)的最短途徑?
StringWriter和HtmlTextWriter都實現了IDisposable,因此您可能想要將它們包裝在using(){}塊中。另外,將它作爲'Control'的擴展方法可能會很有用,因此您可以從實例成員中調用它。 – 2012-11-09 15:44:42
@David,你是如何最終呈現一個ascx文件到HTML?我嘗試了上面的方法,但總是得到「對象引用未設置爲對象的實例」,並說我所引用的用戶控件不是實例。我們應該如何在Windows窗體或控制檯應用程序中使用它? – Princa 2013-04-30 19:28:53
默認的StringWriter()構造函數創建一個新的字符串構建器,所以前兩行可以用System.IO.StringWriter來替換stWriter = new System.IO.StringWriter(); – Spongeboy 2014-04-09 00:53:26