C#中LinkButton的Target="_blank"含义是什么?

17

LinkButton中使用target="_blank"是否可行?我的好像不起作用。

<asp:LinkButton runat="server" ID="g31" Text="PDF" 
    CommandArgument='<%# DataBinder.Eval(Container.DataItem,"productID") %>'
    CommandName='<%# DataBinder.Eval(Container.DataItem,"documentID") %>'
    OnCommand="linkbutton_showpdf" target="_blank">
</asp:LinkButton>

还是说我必须使用不同的按钮格式?


我在我的代码后台有一个Response.Redirect...我正在尝试在另一个窗口中打开它。 - user979331
2
我可能错过了,但我没有看到任何target="_blank"的迹象。 - user596075
你可以在这里找到答案:https://dev59.com/rXE85IYBdhLWcg3wvGER - mshsayem
1
LinkButton的行为类似于Button控件。您是否期望它能够实现此行为?如果确实必要,可以使用Javascript或超链接来实现。 - M.Babcock
9个回答

36

您可以像这样使用链接按钮:

target="_blank"替换为OnClientClick="window.document.forms[0].target='_blank';"


我犯了一个错误...应该是小写的 w 而不是大写的 W。谢谢。现在它可以工作了。 - SearchForKnowledge
3
在点击链接按钮后,这将使表单中的每个链接都变为“target=_blank”。 - deebs
你需要添加 setTimeout(function () { window.document.forms[0].target = ''; }, 0); - Nina

22

当前的答案都不正确,即使是<a>标签在ASP.NET中也不是正确的答案。

使用HyperLink按钮。甚至有一个用于target属性的属性。

<asp:HyperLink runat="server" 
    NavigateUrl='http://rrs.com/aspx/Equipment/EquipmentType.aspx'
    Target="_blank">
        Create/Edit Part Types
</asp:HyperLink>

7
你可以使用超链接控件,该控件具有target='_blank'属性。但是如果你必须使用LinkButton控件,则可以添加一个OnClientClick属性,然后调用JavaScript函数来打开一个弹出窗口。
window.open();

4
我正在使用Devsaninii的答案,并更改了表单的目标,发现我的其余页面在点击更改目标的链接后切换到新窗口的不良行为。这是有道理的,但是不受欢迎。
我正在打开一些带有链接的文件,并使用其他文件加载新页面。我希望文件在新窗口中打开,而新页面在同一窗口中打开。但是在我更改目标后,所有内容都在新窗口中打开。我可以逐个添加客户端单击处理程序到每个linkbutton,但那太麻烦了。
所以,这就是我想出来的:
我向我的linkbuttons添加了一个类,该类应具有新窗口作为目标,然后将此小jQuery片段添加到我的脚本中:
$(function() {
    $('a').click(function() {
        if ($(this).hasClass('changeTarget')) {
            window.document.forms[0].target = '_blank';
        } else {
            window.document.forms[0].target = '_self';
        }
    });
});

现在,当按下应该在新窗口打开的 linkbutton 时,它会在新窗口中打开,而按下其他任何东西时,它会在同一个窗口中打开。

1
在ASP.NET Web Forms中,LinkButton只是使用JavaScript提交基础表单,因此target="_blank"实际上没有任何作用。要打开一个新窗口,您可以通过使用LinkButton的OnClientClick事件来修改“form”的target属性。您还需要在单击后撤消修改(使用setTimeout),否则进一步的按钮单击将无意中定位到新标签页。
<asp:LinkButton ID="uiNewTabExample" Text="Open New Tab" OnClick="uiNewTabExample_Click" OnClientClick="window.document.forms[0].target = '_blank'; setTimeout(function () { window.document.forms[0].target = '' }, 0);" 
runat="server" />

0

请使用 OnClientClick="aspnetForm.target ='_blank';" 替代。

<asp:LinkButton 
        ID="btNext" 
        runat="server" 
        CssClass="btn btn-sm default next"
        OnClientClick="aspnetForm.target ='_blank';" 
        OnClick="ibtNext_Click">
        Next
</asp:LinkButton>


-1

在查看了这些答案后,没有一个完全符合我的要求(使用按钮外观),我最终使用了超链接控件,但使用了与我的常规按钮相同的CSS样式:

.button {

    background-color:#011745;
    color:white;
    padding:7px 12px 7px 12px;
    margin:3px;
    border-style:none;
    font-size:12px;

}

.button:hover {

    background-color:#336699;
    color:white;
    padding:7px 12px 7px 12px;
    margin:3px;
    border-style:none;
    font-size:12px;

}

它看起来就像他们!如果你想要一个在新窗口中打开链接的按钮(就像我一样),那几乎完美了。在一组表格单元格中,它的显示位置比普通按钮略低,因此我将其样式设置为:"position:relative; top:-2px;",这样就解决了问题。我还不得不强制将前景色设置为白色:

<asp:HyperLink ID="btnSummaryReport" Target="_blank" runat="server" Text="SUMMARY REPORT" CssClass="button" ForeColor="white" Font-Size="8" style="position:relative; top:-2px" />

-1

补充@Devsainii上面的答案。

将属性OnClientClick="window.document.forms[0].target='_blank';"添加到您的LinkButton中,然后在代码后台中,只需使用Response.Redirect("~/AnotherPage.aspx")导航到另一个页面。


-3
只需渲染一个 href 属性设置为适当的 URL 的锚点,并将 target 属性设置为 _blank,它将在新窗口中打开该 URL。
<a href="urlOfThePage" target="_blank" >Click me</a>

1
这对于asp.net来说是不正确的。请看下面我的答案。 - M H

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接