在回发时打开新窗口

时间:2010-10-15 10:30:29

标签: c# asp.net postback

要求:我们有一个供用户提交的表单。 提交时,表单数据用于计算和生成报告。

在回发时,会显示确认消息和其他选项。 我们想在新窗口/标签中显示报告。

条件: 我们不希望在回发时使用JavaScript来打开新窗口onload,因为这会阻止禁用JavaScript的用户。

可能的解决方案:

  1. 在按钮单击时打开一个具有唯一ID的新窗口(让代码执行时发生回发)。新窗口应该请求报告,但代码会等到生成报告。在报告页面上,显示等待消息,该消息超时并允许用户刷新或使用元页面中的页面刷新。
  2. 使用JavaScript但检测是否在回发时启用了JS(通过在表单加载时使用JS设置变量值),如果禁用JS,则显示指向用户的链接,否则在回发后使用JS在页面加载时打开窗口。
  3. 问题:

    1. 有没有更好的方法呢?
    2. 改善上述解决方案的任何提示?
    3. 您更喜欢哪一个?为什么?

2 个答案:

答案 0 :(得分:3)

target=_blank建立链接,重定向到生成报告的网页,然后展示。

想要访问您网站的IMO用户将启用javascript。没有javascript的网络不是网络,也许是几年前,但现在......

如果要测试js,可以在回发后注册脚本:

// normal postback
ScriptManager.RegisterStartupScript(this, GetType(), "key", "script();", true);

// postback from a updatepanel
ScriptManager.RegisterStartupScript(updatePanel, updatePanel.GetType(), "key", "script();", true);

答案 1 :(得分:1)

检查js是否为enabled,如果启用了js,请使用ClientScript.RegisterStartupScript(this.GetType(), "yourScript", script, true);执行js并打开报告页面。 如果未启用js id,则显示指向报告页面的链接。