代码之家  ›  专栏  ›  技术社区  ›  eych

响应后关闭窗口。结束

  •  2
  • eych  · 技术社区  · 14 年前

    例如,我有一张表格 ListView 处于编辑模式。
    出现某些情况,使ListView使用的表不再可用。
    我只想在用户点击“保存”时关闭窗口。

    In Page_Load ,我检查桌子是否有空,如果没有,我打电话给 RegisterClientScriptBlock(type,name,"window.close()"). 但是,处理仍在进行,并转到L istView1_ItemUpdating event .

    Page_Load ,如果表不存在,我可以调用response.end-to-stop处理,但是由于脚本从未注册,窗口仍然保持打开状态。

    任何停止处理和关闭窗口的方法都不必自定义 IsTableValid() 检查我所有的方法?

    4 回复  |  直到 14 年前
        1
  •  3
  •   Radu Simionescu    11 年前

    Oded提供的答案不适用于页面加载,我不知道为什么。艾奇提供的答案有效。但是,如果您不想保留一个额外的HTML文件并进行重定向,您可以使用如下方法:

    Response.Clear();
    Response.Write("<script>window.close();</script>");
    Response.Flush();
    Response.End();
    
        2
  •  2
  •   Oded    14 年前

    Flush 在结束前将所有数据发送到浏览器的响应:

    RegisterClientScriptBlock(type,name,"window.close()")
    Response.Flush()
    Response.End()
    

    你可能想 Clear 注册脚本之前的响应,以确保响应缓冲区中没有其他内容。

    还有 ClearHeaders ClearContent 方法,如果只想清除其中一个而不清除另一个。

        3
  •  1
  •   eych    14 年前

    一种解决方案,Kludgey,但可用于其他地方:

    Response.Redirect("close.html")

    哪里 close.html 只是有

      <script>
      window.close();
      </script>
    
        4
  •  0
  •   Shadow Wizard    14 年前

    试试这个:

    HttpContext.Current.ApplicationInstance.CompleteRequest();
    

    微软自己 say 只有向后兼容时才有此响应。end:

    此方法仅用于 与ASP兼容,即 与基于COM的兼容性 网络编程技术 前面的ASP.NET

    不确定它是否能解决您的问题,但至少微软不会有任何借口。:)