【问题标题】:ASP.NET Get table htmlASP.NET 获取表格 html
【发布时间】:2017-06-09 20:56:25
【问题描述】:

我的 ASP.net 页面上有一个类似这样的表格:

<table runat="server" id="resultsTable"></table>

我动态地将内容添加到表格中,它工作得很好。但是,我想在添加动态内容后获取表格的 HTML,即类似这样的内容(格式不重要,我只是添加了它)

<table runat="server" id="resultsTable">
  <tr>
    <td>Hello!</td>
  </tr>
  <tr>
    <td>Goodbye!</td>
  </tr>
</table>

我需要将结果作为字符串。显然我可以做一些循环并用数据构建我自己的表,但如果可能的话,我宁愿不这样做。

【问题讨论】:

  • 你需要每个单元格的内容,还是整个表格?
  • 整个表格,HTML 和所有

标签: asp.net html-table


【解决方案1】:

最初我想只使用InnerHtmlInnerText 方法,但这些是not supported on the HtmlTable class

那么如果我们使用 Render 方法呢?像这样的东西(取自Anatoly Lubarsky)?

public string RenderControl(Control ctrl) 
{
    StringBuilder sb = new StringBuilder();
    StringWriter tw = new StringWriter(sb);
    HtmlTextWriter hw = new HtmlTextWriter(tw);

    ctrl.RenderControl(hw);
    return sb.ToString();
}

这个方法显然可以被清理以处理关闭作家等。

【讨论】:

    【解决方案2】:

    由于你的表格是一个服务器控件,你可以使用它的 RenderControl 方法来获取渲染结果:

        public static string GetRenderResult(Control control) {
            using(StringWriter sw = new StringWriter(CultureInfo.InvariantCulture)) {
                using(HtmlTextWriter writer = new HtmlTextWriter(sw))
                    control.RenderControl(writer);
                sw.WriteLine();
                return sw.ToString();
            }
        }
    

    【讨论】:

      【解决方案3】:

      有几种方法我可以想到如何做到这一点。最简单的方法是将桌子包围在 .然后在您的 vb/C# 端,只需调用 hold.innerhtml,它就会返回一个字符串。

      【讨论】:

      • 不幸的是,这不起作用“因为内容不是文字。”
      【解决方案4】:

      我在页面的OnLoad 方法中使用了以下内容将您的表格转换为HTML 字符串:

          string html;
          using (var writer = new StringWriter())
          using (var xmlwriter = new HtmlTextWriter(writer))
          {
              this.resultsTable.RenderControl(xmlwriter);
              html = writer.ToString();
          }
      

      【讨论】:

        【解决方案5】:

        嗯。在表单发布之前,我会将表格标记添加到某个隐藏字段(这是一个服务器控件)。

        <div id="tablediv">
        <table>...</table>
        </div>
        

        javascript:

        var html = document.getElementById('tablediv').innerHTML;
        document.getElementById('hfTableHtml').value = html;
        

        编辑:是的,我担心会发生请求验证!在将其存储到隐藏字段之前,您必须禁用它或用其他东西替换这些标记元素

        【讨论】:

          【解决方案6】:

          查看HTMLAgilityPack(几个 SO 帖子引用它。)

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-12-08
            • 2013-05-21
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多