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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM