【问题标题】:How do I get a web control's HTML?如何获取 Web 控件的 HTML?
【发布时间】:2013-12-05 04:15:21
【问题描述】:

我正在使用 String Builder 和我在页面中动态生成的树视图控件。

这是我尝试过的:

Public sbMenu As New StringBuilder

在页面加载事件中

    Dim TreeView1 As New TreeView()
    TreeView1.ID = "tree1"
    TreeView1.ShowCheckBoxes = TreeNodeTypes.All
    TreeView1.ShowLines = True
    TreeView1.Nodes.Clear()

我正在使用数据库数据加载 TreeView1,并最终将其附加到我的字符串构建器对象

    sbMenu.Append("<div>")
    sbMenu.Append(TreeView1)
    sbMenu.Append("</div>")

但是 sbMenu 不包含 TreeView1 而是存储

System.Web.UI.WebControls.TreeView

您能帮帮我吗,我的 stringBuilder 可以如何保存 TreeView 控件并可以使用它..

我将在我的 .aspx 页面中使用它

<%= sbMenu.Tostring() %>

这里我需要 TreeView 控件..

【问题讨论】:

  • 期望 TreeView 的字符串值应该是什么?默认情况下,当您在对象上调用 ToString() 时,它会返回类的完全限定名。
  • 我需要 StringBuilder 来保存 TreeView 控件,我可以在我的 .aspx 页面中将其用作 以便我可以获得树视图
  • 你真的需要动态添加 TreeView 吗?为什么不把控件放在页面中,从代码隐藏中添加数据,如果不需要就隐藏它?

标签: asp.net .net vb.net webforms stringbuilder


【解决方案1】:

您可以通过调用RenderControl 来获取控件的HTML。例如

var sb = new StringBuilder();

using (var sw = new StringWriter(sb)) 
using (var writer = new HtmlTextWriter(sw))
{
     myControl.RenderControl(writer);
}

string html = sb.ToString();

或者在 VB 中:

Dim sb = New StringBuilder()

Using sw As New StringWriter(sb)
    Using writer As New HtmlTextWriter(sw)
        myControl.RenderControl(writer)
    End Using
End Using

Dim html As String = sb.ToString()

【讨论】:

  • @MikeSmithDev 已更新为 VB .NET 版本。
猜你喜欢
  • 1970-01-01
  • 2011-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-07
相关资源
最近更新 更多