【问题标题】:Can ASCX or ASP.net files be saved as HTML filesASCX 或 ASP.net 文件可以保存为 HTML 文件吗
【发布时间】:2011-06-07 20:14:15
【问题描述】:

可以将 ASCX 或 ASP.net 文件保存为 HTML 文件吗?如果有,怎么做?

【问题讨论】:

  • 出于什么目的?...从您的浏览器中,您可以保存输出的 html,但这对您有什么用?
  • 您到底想完成什么?您是否在 ASCX 文件中有 HTML 标记,需要将其提取到静态 HTML 页面中?您是否尝试将动态内容的渲染输出保存在 ASCX 文件中?

标签: asp.net html ascx


【解决方案1】:

是的,获取用户控件的呈现内容是可能的,请执行以下操作:

StringWriter output = new StringWriter();
Page pageHolder = new Page();
UserControl viewControl = (UserControl)pageHolder.LoadControl("path to ascx file");
pageHolder.Controls.Add(viewControl);
HttpContext.Current.Server.Execute(pageHolder, output, true);
string htmlOutput = output.ToString();

如果需要,您可以将上述内容调整为 ASPX 页面 :-)

从那里,将其保存到文件应该相当简单。

HTH。 D

【讨论】:

    【解决方案2】:

    您可以直接使用PageUserControlRender 方法执行此操作。由于该方法受到保护,您将需要创建一个子类的控件。从那里,您可以做任何您需要的事情。

    例如

    public partial class MyPage: Page
    {
        public string GetPageContents()
        {
            StringBuilder sb = new StringBuilder();
            StringWriter sw = new StringWriter(sb);
            using (HtmlTextWriter writer = new HtmlTextWriter(sw))
            {
                  Render(writer);
            }
            return sb.ToString();
        }
    }
    

    您可能不想在页面的 PreRenderComplete 事件之前的任何时候调用它,因为否则您无法确定所有子控件/事件/等都已完成。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-17
      • 2011-02-25
      • 1970-01-01
      • 1970-01-01
      • 2014-09-13
      • 1970-01-01
      • 1970-01-01
      • 2013-11-14
      相关资源
      最近更新 更多