【问题标题】:Open new window on postback在回发时打开新窗口
【发布时间】:2010-10-15 10:30:28
【问题描述】:

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

在回发时,会显示一条确认消息和更多选项。 我们希望在新窗口/标签中显示报告。

条件: 我们不想在回发时使用 JavaScript 打开一个新窗口onload,因为这将阻止禁用 JavaScript 的用户。

可能的解决方案:

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

问题:

  1. 有没有更好的方法来做到这一点?
  2. 有任何提示可以改进上述解决方案吗?
  3. 您更喜欢哪一个?为什么?

【问题讨论】:

    标签: c# asp.net postback


    【解决方案1】:

    使用target=_blank 建立一个链接,该链接将重定向到生成报告的页面,然后显示它。

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

    如果要测试js,可以在postback后注册一个脚本:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2014-03-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-09
        相关资源
        最近更新 更多