如何从Iframe打开重定向页面在ASP.NET的父窗口中打开?

Sri*_*ddy 4 c# asp.net iframe response.redirect imagebutton

我有一个asp.net页面,其中包含嵌入了一些数据的Iframe和一个ImageButton.在ImageButton单击事件(服务器端)我有Response.Redirct:

Response.Redirect("results.aspx");
Run Code Online (Sandbox Code Playgroud)

这总是在iframe中打开results.aspx.我希望results.aspx应该始终在父窗口中打开.到目前为止我尝试了以下但是没有效果:

Response.Redirect("<script language='javascript'>self.parent.location='results.aspx';</script>");
Response.Redirect("javascript:parent.change_parent_url('results.aspx');");
Run Code Online (Sandbox Code Playgroud)

作为Rifk的回应,我添加了ClientScriptManager..aspx有这个条目:

<asp:ImageButton ID="ImageButton_ok" ImageUrl="~/images/ok.gif"
        OnClick="btnVerify_Click" OnClientClick="ValidateFields()" 
        runat="server"  />
Run Code Online (Sandbox Code Playgroud)

Page_Load()中的代码:

ClientScriptManager cs = Page.ClientScript;
StringBuilder myscript = new StringBuilder();
myscript.Append("<script type=\"text/javascript\"> function ValidateFields() {");
myscript.Append("self.parent.location='default.aspx';} </");
myscript.Append("script>");
cs.RegisterClientScriptBlock(this.GetType(), "ButtonClickScript", myscript.ToString());
Run Code Online (Sandbox Code Playgroud)

btnVerify_Click具有主要的业务逻辑.如果我的业务逻辑失败,我将如何停止OnClientClick()触发?或者,如何在成功执行服务器端代码时触发?

Dav*_*ace 8

如果是在服务器端进行重定向的页面,Response.Redirect将仅影响iFrame中的页面.您希望在该iFrame中运行一些javascript,它将重定向父级,就像您在第二个示例中所做的那样.为了运行脚本,您不应该使用Response.Redirect(),而应该注册客户端脚本.

请参阅以下链接,了解如何在ASP.Net 2.0中的代码中注册客户端脚本 - 在ASP.Net 2.0中 使用Javascript

例如,您将在事件结束时添加与此类似的内容,以处理ImageButton Click:

this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "myUniqueKey",
                    "self.parent.location='results.aspx';", true);
Run Code Online (Sandbox Code Playgroud)