【问题标题】:how to clean the whole asp.net page in code behind?如何在后面的代码中清理整个 asp.net 页面?
【发布时间】:2014-01-30 04:38:02
【问题描述】:

假设我有一个带有 UI 和代码的 aspx 页面。

我在事件 Page_Load 中有代码,例如:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
   Me.Response.Write("Clean the page")
   '.....
End Sub

但是页面仍然以aspx(所有这些标记)的形式呈现出来。

我想要的是在浏览器中为用户唯一显示“清理页面”。 怎么做?

【问题讨论】:

  • 问题不清楚,您是想以编程方式从页面中删除所有服务器控件,还是完全阻止呈现任何 html?结果是一样的,但后者可以通过多种方式实现。

标签: asp.net


【解决方案1】:

像这样:

Response.Clear();
Response.ClearHeaders();

您可能希望将其与:

Response.End(); 

【讨论】:

  • 响应也应该被终止 - 否则其他页面生命周期事件仍将触发(并最终呈现 ASPX)。我认为在Page_Load 时间实际上没有将任何内容写入响应.. 也许 标头?
  • @user2864740 感谢您的关注,我刚刚注意到它并添加了附加评论。
【解决方案2】:

只需删除所有控件,例如:

protected void Page_Load(object sender, EventArgs e)
{
    this.Controls.Clear();
    Response.Write("Clean the page");
}

如果您也有母版页,那么您可以这样做:

protected void Page_Load(object sender, EventArgs e)
{
    if (this.Master != null)
        this.Master.Controls.Clear();

    this.Controls.Clear();
    Response.Write("Clean the page");
}

protected void Page_Load(object sender, EventArgs e)
{
    for (int i = this.Controls.Count - 1; i >= 0; i--)
    {
        this.Controls.RemoveAt(i);
    }
    Response.Write("Clean the page");
}

【讨论】:

  • 取决于“干净”的含义......外部控件(通常来自母版页)和非服务器运行的 HTML 仍会流血。
猜你喜欢
  • 1970-01-01
  • 2017-01-20
  • 1970-01-01
  • 1970-01-01
  • 2011-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-07
相关资源
最近更新 更多