代码之家  ›  专栏  ›  技术社区  ›  Chris Stewart

使用response.redirect和jquery thickbox

  •  0
  • Chris Stewart  · 技术社区  · 14 年前

    我正在使用jquery thickbox显示一个iframe(upload.aspx),它允许用户上载文件。在upload.aspx的代码隐藏中,我通过发送完成:

    Response.Redirect("blah.aspx");
    

    我重定向到的页面基于上载过程的结果是动态的。当这个重定向发生时,它发生在ThickBox中,而不是我希望的父窗口中。以下是调用ASP.NET页(home.aspx):

    <a href="upload.aspx?placeValuesBeforeTB_=savedValues&TB_iframe=true&height=300&width=500&modal=true" class="thickbox">Add New</a>
    

    这里是upload.aspx页面内的提交按钮:

    <asp:Button ID="btnUpload" runat="server" Text="Upload" 
         OnClick="btnUpload_Click" OnClientClick="self.parent.tb_remove();" />
    

    这是为了关闭模式窗口,并将控制发送到代码隐藏,以执行文件上载、处理等。

    以前有人经历过吗?如何在父窗口上发送重定向?

    2 回复  |  直到 14 年前
        1
  •  1
  •   SLaks    14 年前

    无法向父框架发送重定向。

    相反,您需要使用javascript。

    你可以写 top.location = "whatever"; 在javascript中 <iframe> .

        2
  •  0
  •   Chris Stewart    14 年前

    这就是我最后所做的。

    向upload.aspx的body元素添加了服务器标记:

    <body id="mBody" runat="server">
    

    删除了response.redirect,并附加了一些要在下一次加载时运行的javascript。

    HtmlGenericControl body = (HtmlGenericControl)Page.FindControl("mBody");
    body.Attributes.Add("onload", "window.top.location.href='blah.aspx';");
    

    并从按钮中删除客户端单击:

    <asp:Button ID="btnUpload" runat="server" Text="Upload" 
        OnClick="btnUpload_Click" />