如何在asp.net中单击按钮时在新选项卡中打开页面?

时间:2012-05-08 06:44:40

标签: asp.net

我想在按钮点击时在浏览器的新标签页面中打开一个页面。

我在谷歌上搜索了很多但我找不到任何东西。

这是我的按钮。

   <asp:Button ID="btnNewEntry" runat="Server" CssClass="button" Text="New Entry" OnClick="btnNewEntry_Click" />

    protected void btnNewEntry_Click(object sender, EventArgs e)
    {      
        Response.Redirect("New.aspx");
    }

你能帮我解决一下这个问题吗?

17 个答案:

答案 0 :(得分:31)

您可以使用window.open。像这样:

protected void btnNewEntry_Click(object sender, EventArgs e)
{ 
   Page.ClientScript.RegisterStartupScript(
   this.GetType(),"OpenWindow","window.open('YourURL','_newtab');",true);
}

答案 1 :(得分:6)

为什么不直接从OnClick上调用window.open?

<asp:Button ID="btnNewEntry" runat="Server" CssClass="button" Text="New Entry" OnClick="window.open('New.aspx')" />

答案 2 :(得分:4)

注意重置目标,否则所有其他调用(例如def meanFilter(self,image,fraction): w,h = image.size image=image.convert("RGBA") sections=w/fraction area = fraction * fraction imagepix=image.load() i=-1 j=-1 count = 0 countActual = 0 pixArray =[] while i<sections-1: j=-1 i+=1 while j<sections-1: j+=1 for a in range(i*fraction,(1+i)*(fraction)): for b in range(j*fraction,(1+j)*(fraction)): rgb=imagepix[a,b] if pixArray: if abs(rgb[0]-255)>5 and abs(rgb[1]-255)>5 and abs(rgb[2]-255)>5 and not self.isBlack(rgb): pixArray=map(lambda x,y: x+y,rgb,pixArray); countActual +=1 else: pixArray=rgb countActual+=1 if countActual!=0: mean = (int(pixArray[0]/countActual),int(pixArray[1]/countActual),int(pixArray[2]/countActual),int(pixArray[3]/countActual)) for a in range(i*fraction,(1+i)*(fraction)): for b in range(j*fraction,(1+j)*(fraction)): imagepix[a,b]=mean countActual = 0 pixArray=[] return image )都会在新标签页中打开,这可能不是您想要的。

Response.Redirect

在javaScript中:

<asp:LinkButton OnClientClick="openInNewTab();" .../>

答案 3 :(得分:4)

将JavaScript用于主窗体/按钮单击事件。一个例子是:

Context.Response.Write("<script language='javascript'>window.open('AccountsStmt.aspx?showledger=" & sledgerGrp & "','_newtab');</script>")

答案 4 :(得分:3)

试试这个而不是重定向......

Response.Write("<script>");
Response.Write("window.open('ClickPicture.aspx','_blank')");
Response.Write("</script>");

答案 5 :(得分:3)

试试这个

<a href="#" target="_blank">Link</a>

答案 6 :(得分:2)

刚遇到同样的问题。客户端不合适,因为该按钮是从列表视图中回发信息。

way2coding上看到与Amaranth相同的解决方案,但这对我不起作用。

然而,在评论中,有人发布了一个类似的解决方案,

OnClientClick="document.getElementById('form1').target ='_blank';"

其中form1是你的asp.net表单的id。

答案 7 :(得分:1)

你必须使用Javascript,因为后面的代码只是服务器端。我很确定这是有效的。

<asp:Button ID="btnNewEntry" runat="Server" CssClass="button" Text="New Entry" OnClick="btnNewEntry_Click" OnClientClick="aspnetForm.target ='_blank';"/>

protected void btnNewEntry_Click(object sender, EventArgs e)
{
  Response.Redirect("New.aspx");
}

答案 8 :(得分:1)

您可以像这样将按钮添加到OnClientClick上:

<asp:Button ID="" runat="Server" Text="" OnClick="btnNewEntry_Click" OnClientClick="target ='_blank';"/>

这将更改在新选项卡中打开的所有按钮的当前表单目标。因此,要完成此修复,您可以使用2种方法:

  1. 对于此表单中的任何其他按钮,将添加到客户端的“重置表单目标”功能如下:
function ResetTarget() {
   window.document.forms[0].target = '';
}
  1. 在函数内部的setTimeout()中添加相同的代码,以便该代码在几分钟后将重置表单的目标。查看此答案https://stackoverflow.com/a/40682253/8445364

答案 9 :(得分:0)

Add this Script  
<script type = "text/javascript">
 function SetTarget() {
     document.forms[0].target = "_blank";
 }
</script>
and 
<asp:Button ID="BTNpRINT"  runat="server" Text="PRINT"  CssClass="btn btn-primary"  OnClick="BTNpRINT_Click" OnClientClick = "SetTarget();"/>    
and 
protected void BTNpRINT_Click(object sender, EventArgs e)
    {
        Response.Redirect(string.Format("~/Print.aspx?ID={0}",txtInv.Text));
    }

答案 10 :(得分:0)

在vb.net中,点击点击点击链接按钮,这将起作用。

const arr = ['Phnom Penh', 'AA', 'Kompot', 'BB'];
const data = [
    { location: 'Phnom Penh', sale: 1000 },
    { location: 'Kandal', sale: 500 },
    { location: 'Takeo', sale: 300 },
    { location: 'Kompot', sale: 700 },
    { location: 'Prey Veng', sale: 100 },
    { location: 'Seam Reap', sale: 800 },
    { location: 'Null', sale: 0 },
];

const dataLookup = data.reduce((res, obj) => {
    return {...res, [obj.location]: obj}
}, {});
const result = arr.map(loc => dataLookup[loc] || dataLookup.Null);
console.log(result);

答案 11 :(得分:0)

检查验证后,

add target ='_ blank':

    <asp:button id="_ButPrint"  ValidationGroup="print" OnClientClick="if (Page_ClientValidate()){$('form').attr('target','_blank');}"  runat="server" onclick="ButPrint_Click" Text="print" />
                                                                 

答案 12 :(得分:0)

您可以在 ASPX HTML 前端执行此操作,使按钮转到新选项卡以动态显示 ASP.NET 站点中的页面:

        <asp:Button ID="btnNewEntry" CssClass="button"  OnClientClick="window.open('https://website','_blank'); return false;" text="WebsiteName"  runat="server" />

答案 13 :(得分:-1)

Open a URL in a new tab (and not a new window) using JavaScript

  

作者无法做的任何事情都可以选择在新标签页中打开,而不是在新窗口中打开。

浏览器决定打开新标签页面还是打开新窗口。您无法以开发人员的身份来控制它。

答案 14 :(得分:-1)

一个简单的解决方案:

<a href="https://www.google.com" target="_blank">
    <button type="button">Open new tab</button>
</a>

答案 15 :(得分:-3)

你应该在客户方面做到这一点。你可以放置一个带有target =“_ blank”和style =“display:none”的html超链接。 之后创建一个像下面这样的javascript函数

function openwindow(){
$("#hyperlinkid").click();
return false;
}

使用此函数作为按钮的onclientclick事件处理程序,如onclientclick =“return openwindow()” 您需要在页面中包含一个jquery。

答案 16 :(得分:-4)

Add_ supplier是表单的名称

private void add_supplier_Load(object sender, EventArgs e)
{
    add_supplier childform = new add_supplier();
    childform.MdiParent = this;
    childform.Show();
}