ASP.NET 后台打开新页面
目录
Response.Write
这是最常见的后台打开新页面的方法。
Response.Write("<script>window.open('~/FileView.aspx','_blank')</script>");
在AJAX下的Response.Write
AJAX下直接使用Response.Write会报错,此时有两种解决方案
- 将前台控件设置为PostBackTrigger
- 使用 ScriptManager.RegisterStartupScript
设置PostBackTrigger
</ContentTemplate>
<Triggers>
<asp:PostBackTrigger ControlID="rpButton" />
</Triggers>
</asp:UpdatePanel>
ScriptManager.RegisterStartupScript
ScriptManager.RegisterStartupScript(this, this.GetType(), "ScriptName", "window.open('http://www.baidu.com','_blank');", true);
Response.Redirect
Redirect本身是在当前页面跳转,但很多情况下可以通过设置Target="_blank"
实现打开新页面。
设置整个页面的Target属性
此法缺陷在于设置后,本页面中的Response.Redirect都是在新页面打开
protected void Page_Load(object sender, EventArgs e)
{
form1.Target = "_blank";
}
设置LinkButton的Target
适用于ListView、GridView内部的LinkButton
<asp:LinkButton ID="LinkButtonView" runat="server" CommandName="View" OnClientClick ="document.forms[0].target = '_blank';" CommandArgument='<%# Eval("ViewFileID") %>' >查看</asp:LinkButton>
设置按钮的Target属性
适用于一般的Button
如果该按钮在AJAX内,还是得设置PostBackTrigger
protected void Page_Load(object sender, EventArgs e)
{
Button1.Attributes.Add("onclick", "this.form.target='_blank'");
Button2.Attributes.Add("onclick", "this.form.target=''");
}
protected void Button1_Click(object sender, EventArgs e)
{
Response.Redirect("http://oec2003.cnblogs.com");
}
protected void Button2_Click(object sender, EventArgs e)
{
Response.Redirect("http://oec2003.cnblogs.com");
}
作者:Moonache
出处:http://www.cnblogs.com/moonache/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。