我有任何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. 如何呈現ASP.NET MVC ViewResult爲HTML?
- 2. 你可以給任何未呈現爲html的asp.net控件嗎?
- 3. 如何將HTML呈現爲jQuery.tmpl()中呈現的HTML?
- 4. 將ASP.NET控件呈現爲HTML字符串將不會呈現選定的事件
- 5. 如何檢索ASP.NET中控件的呈現html?
- 6. 如何將控件呈現的HTML寫入字符串
- 7. 將HTML呈現爲PNG/JPEG
- 8. 按鈕呈現時呈現HTML/ASP.NET
- 9. Mustachejs將html標記呈現爲html
- 10. 如何使用Node將ReactJS組件呈現爲HTML字符串?
- 11. 如何將HTML呈現爲反應組件
- 12. ASP.net MVC呈現html頁面
- 13. 如何在python中將JavaScript HTML呈現爲HTML?
- 14. 將Asp.net控件轉換爲HTML
- 15. ASP.NET將原始HTML解析爲控件
- 16. 如何呈現HTML爲文本
- 17. 如何呈現HTML Django頁面爲PDF?
- 18. Html呈現事件
- 19. ASP.NET:將DataTable呈現爲字符串(HTML)的最短途徑?
- 20. 如何使用ASP.NET呈現數字輸入控件
- 21. 如何在asp.net MVC中創建/呈現Javascript控件?
- 22. 如何從字符串動態呈現asp.net控件?
- 23. 如何在WebBrowser控件中處理HTML呈現?
- 24. 將HTML字符串呈現爲React組件中的真實HTML
- 25. 如何在node.js中呈現html文件
- 26. 將HTML呈現爲來自MVC控制器的字符串
- 27. 將HTML呈現爲WPF中的圖像?
- 28. 將Java圖形呈現爲HTML
- 29. c#將html呈現爲文字
- 30. Rails將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