在ASP.NET的新选项卡中打开链接

时间:2014-03-06 21:50:50

标签: c# asp.net

我尝试使用Button在ASP.NET的新标签页中打开链接。我尝试了以下但是它没有工作:

<asp:Button ID="ReportButton" runat="server" CssClass="button" Font-Size="XX-Large" ForeColor="White" Text="Report" OnClick="ReportButton_Click" OnClientClick="form1.target='_blank';" /> 

在代码中,ReportButton_Click定义如下:

protected void SkidPackReportButton_Click(object sender, EventArgs e)
{
    GoToPage(LocationSkidPackReportPage);
}

GoToPage定义如下:

bool GoToPage(string page)
{
    try
    {
        Response.Redirect(page);
        return true;
    }
    catch (Exception)
    {
        StatusLabel.Text = "There was an error finding the page.";
        return false;
    }
}

3 个答案:

答案 0 :(得分:3)

不要做服务器端Response.Redirect,只做客户端window.open。 E.g。

void GoToPage(string page) {

  ScriptManager.RegisterStartUpScript(this, this.GetType(), "newPage", String.Format("window.open({0});", page), True);

}

或者更好 - 完全避免回发。您可以将clientClick分配给按钮,如:

ReportButton.OnClientClick = String.Format("window.open({0});return false;", LocationSkidPackReportPage);

这样,新页面将在客户端上打开,而无需返回服务器。

答案 1 :(得分:0)

在后面的代码中设置LocationSkidPackReportPage公共属性,然后将按钮替换为:

<a href="<%=LocationSkidPackReportPage%>" class="button" target="_blank">Report</a>

或者,如果您需要填写此代码中的var:

// Response.Redirect(page); -> Replace this by:

string script = String.Format("window.open('{0}', '_blank');", LocationSkidPackReportPage);
ScriptManager.RegisterStartUpScript(this, this.GetType(), "reportResultPage", script, True);

答案 2 :(得分:0)

这项工作对我来说

  Page.ClientScript.RegisterStartupScript(
   this.GetType(), "OpenWindow", "window.open('../_Reportes/ReporteGeneral.aspx','_newtab');", true);