目錄
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");
}