c# - 在回发时打开新窗口

标签 c# asp.net postback

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

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

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

可能的解决方案:

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

问题:

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

最佳答案

使用 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);

关于c# - 在回发时打开新窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3941400/

相关文章:

c# - 为什么在不修改枚举集合时得到 "Collection was modified; enumeration operation may not execute"?

javascript - C# DateTime - 使用 fullcalendar.io 处理时区的最佳方法?

c# - 如何按日期/时间对 DataGrid 中的列进行排序

asp.net - 在多选 RadComboBox 中设置 "Selected Item"

c# - 单击按钮时使用 JS 更改 asp :HiddenField. 值

c# - Count Query generation in table-per-type inheritance

c# - 正则表达式命令循环中出现内存不足错误?

asp.net - 如何在asp.net 网站中使用wowza 媒体服务器?

asp.net - 当用户单击浏览器的后退按钮时防止回发

javascript - 强制 ASP.NET 为所有用户代理生成 JavaScript