ASP.NET WebForms + Postback然后打开弹出窗口

Fly*_*wat 3 asp.net webforms

我有一个LinkBut​​ton必须回发以执行一些逻辑.

一旦完成,我不想在浏览器中重新加载页面,而是希望不管它并弹出一个新窗口.

到目前为止,我最好的想法是将LinkBut​​ton放在UpdatePanel中,让它在重新加载时渲染一些JavaScript,但我认为这完全是hacky.此外,如果我没记错,更新面板中的JavaScript无论如何都不会运行.

还有其他想法吗?

Mar*_*ett 6

使用LinkBut​​ton.PostBackUrl将不同的页面设置为POST,并使用一些客户端脚本来获取新窗口(并恢复旧目标,以便将来的回发正常工作).第二页可以使用PreviousPage从原始页面访问任何所需的状态.

<script runat="server">
   void lnk_Click(object sender, EventArgs e) {
      // Do work
   }
</script>

<script type="text/javascript">
   var oldTarget, oldAction;
   function newWindowClick(target) {
      var form = document.forms[0];
      oldTarget = form.target;
      oldAction = form.action;
      form.target = target;

      window.setTimeout(
         "document.forms[0].target=oldTarget;"
         + "document.forms[0].action=oldAction;", 
         200
      );
   }
</script>

<asp:LinkButton runat="server" PostBackUrl="Details.aspx" Text="Click Me"
  OnClick="lnk_Click"
  OnClientClick="newWindowClick('details');" />
Run Code Online (Sandbox Code Playgroud)