【问题标题】:How to open link in new tab with Link Button如何使用链接按钮在新选项卡中打开链接
【发布时间】:2015-09-04 15:42:57
【问题描述】:

我有一个gridviewHeaderTemplate,它包含一个LinkButton。当我点击按钮时,我想在new tab中打开一个链接

<asp:TemplateField>
     <HeaderTemplate>
      <asp:LinkButton ID="lnkbtn" runat="server" OnClientClick="SetTarget();" OnClick="lbtn_Click">Topics</asp:LinkButton>
     </HeaderTemplate>
<ItemTemplate>
........
</ItemTemplate>

我的JavaScript

<script type = "text/javascript">
        function SetTarget() {
            document.forms[0].target = "_blank";
        }
</script>

OnClick 事件是

protected void lbtn_Click(object sender, EventArgs e)
{
  Response.Redirect("http://www.google.com/");
}

这是在新标签页中打开链接。 但我在gridview之外还有其他LinkButton用于其他进程如Saving数据等。

<asp:LinkButton ID="LinkButton1" runat="server">Save</asp:LinkButton>

但是当我点击这个按钮时,它正在打开新标签。如何防止它们在新标签中打开

【问题讨论】:

  • LinkButton1 中添加一个OnClientClick,以撤消SetTarget 所做的操作。

标签: javascript jquery asp.net gridview


【解决方案1】:

您是否有理由要在服务器端进行重定向?你可以这样做

function redirectToGoogle(){
   window.open('google.com');
   return false;
}

<asp:LinkButton ID="lnkbtn" runat="server" OnClientClick="return redirectToGoogle();" ....

当您设置 ASP 表单的目标时,每个链接或表单帖子都将指向新窗口。因此,您将不得不在每个其他链接按钮单击或表单提交时撤消表单的目标。

【讨论】:

  • 要重定向的链接是通过一些操作动态加载的。所以想在服务器端做
【解决方案2】:

首先,见This Link

重要信息

链接按钮是 hyperlink-style 按钮,所有 属性与 一个按钮,但它只以超链接样式显示。如果你想 单击控件时链接到另一个网页,请考虑使用 超链接控件。

尝试:

编辑 2:

你是这样使用的..

<asp:LinkButton ID="LinkButton1" runat="server">Save</asp:LinkButton>

gridview 或类似的地方..

然后您想在新窗口中导航所有超链接的 URL。

所以,你可以动态设置url。

喜欢

<asp:TemplateField HeaderText="Log" ItemStyle-Width="15%">
        <ItemTemplate>
            <asp:HyperLink runat="server" 
                NavigateUrl='<%# GetUrl(Eval("Base_Id"))%>' 
                text="Log" target="_blank"></asp:HyperLink>
        </ItemTemplate>
    </asp:TemplateField>

.cs

protected string GetUrl(object id)
{
return "http://somelink&RecordId=" + id;
}

编辑 1: JavaScriptwindow.open()

javascript:window.open('xyz.aspx')

喜欢

<asp:LinkButton ID="lb1" runat="server" OnClientClick="javascript:window.open('xyz.aspx')">click me</asp:LinkButton>

【讨论】:

  • 我必须进行一些服务器端操作,我刚刚给出了一个示例链接。链接是动态加载的
  • 所以,你不能这样做......你需要遵循given link's解决方案。你会得到你需要的一切。根据您的要求。
  • 超链接没有OnClick事件
  • 超链接不需要onClick。它有NavigateURL。看来你这样做是错误的。如果您将数据加载到 GridView,您应该将链接输出到HyperLink,就像您执行Label 一样。如果链接需要操作,请使用网格的_ItemDataBound sub 来执行此操作。当网格遍历数据时,ItemDataBound 将在每个数据绑定控件上被调用,包括 HyperLink...您可以检索 NavigateURL,对其进行操作并将其填回。
  • @user3540365 id 在cs中始终为空
【解决方案3】:

当你的OnClientClick JavaScript 设置了这样的表单目标

<script type = "text/javascript">
        function SetTarget() {
            document.forms[0].target = "_blank";
        }
</script>

您正在为该页面上的每个 ButtonLinkButton 设置目标。然后,所有按钮都将在新选项卡中打开,这可能不是您想要的。这是因为目标是为(一)页表单设置的。

使用 ASP.NET Web 表单,对于每个网页,只有一个页面表单。使用浏览器 > 查看源代码

...
<body>
  <form method="post" action="./SearchIndex.aspx" id="form1">
...

如果你使用这种方法,最好这样做

<script type="text/javascript">
    function SetTarget() {
        window.document.forms[0].target = '_blank'; 
        setTimeout(function () { window.document.forms[0].target = ''; }, 0);
    }
</script>

为该按钮单击设置页面表单目标的位置(在新选项卡中打开),然后立即重置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多