【问题标题】:find DIV HTML in ASP.NET在 ASP.NET 中查找 DIV HTML
【发布时间】:2012-06-21 05:53:18
【问题描述】:

我正在使用 VS2010、C# 来开发我的 ASP.NET Web 应用程序,我已经动态地创建了一个页面(在页面上使用多个服务器端和 HTML 控件)。现在我要通过电子邮件发送我的页面,我应该将其内容作为 HTML,我怎样才能拥有我的页面 HTML?当然我有一个 DIV (runat=....),其中包含应该发送的部分,我怎样才能得到它的 HTML 内容? innerHTML 给我的不是字面错误,我有什么选择?我想要我的 DIV 的最终渲染内容

谢谢

【问题讨论】:

    标签: asp.net html


    【解决方案1】:

    您可以使用以下代码在代码中呈现 webforms 控件:

    var control = new Control();
    StringBuilder b = new StringBuilder();
    HtmlTextWriter writer = new HtmlTextWriter(new System.IO.StringWriter(b));
    control.RenderControl(writer);
    return b.ToString();
    

    注意:还有另一种渲染整个页面的方法,它可能比已经提出的方法更容易:

    var writer = new StringWriter();
    HttpContext.Current.Server.Execute(url, writer);
    string output = writer.GetStringBuilder().ToString();
    

    【讨论】:

    • 如果你的 div 有一个 runat="server" 标签,这意味着你可以在你的代码隐藏中访问它......所以只需用你的 DIV 替换我代码中的 var control 对象
    • 我遇到以下错误:'ImageButton' 类型的控件 'imgFa' 必须放在带有 runat=server 的表单标签内。
    • webforms 需要一个 HTML 表单元素(因此得名)才能工作......因此需要将控件放置在标记页面上的表单标签内。在尝试上面的代码之前,我会确保你可以在浏览器中渲染一切正常。
    【解决方案2】:

    您可能想尝试使用 WebClient 将页面简单地下载为字符串。

    var wc = new WebClient();
    string url = Request.Url.AbsoluteUri;    // for the current page, otherwise set the URL
    string html = wc.DownloadString(url);
    

    不确定您是否知道,但 HTML 电子邮件是一个棘手的主题(电子邮件客户端就像非常糟糕的浏览器,您只能使用基本的标记和 CSS)。我建议您查看HTML Email Boilerplate,了解有关这方面的一些提示和最佳实践。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-04
      相关资源
      最近更新 更多