【问题标题】:Link Button : "right click and open in new tab" not working链接按钮:“右键单击并在新选项卡中打开”不起作用
【发布时间】:2013-02-20 21:58:57
【问题描述】:

我正在尝试右键单击链接按钮并在新选项卡中打开它或单独的窗口页面不显示任何内容。我找到了一些使用超链接按钮的解决方案,因为它具有将目标设置为“_blank”的属性,但 LinkBut​​ton 没有任何目标属性。

我想使用 LinkBut​​ton 而不是超链接按钮,只是因为我无法在超链接按钮上设置命令参数或命令名称,也无法在其上触发事件。

<asp:LinkButton ID="lnkHeadingHindi" Text='<%#Patrika.Common.ConvertNews(Eval("strMainHeadingHin").ToString())%>' CommandArgument='<%#Eval("intNewsId") %>' runat="server"></asp:LinkButton>

如果有人有解决方案并在有任何问题时告诉我,那就太好了。

谢谢!!

【问题讨论】:

标签: c# asp.net vb.net c#-4.0


【解决方案1】:

根据对this question 的接受回答,如果您想执行POST(例如LinkButton)但结果在新窗口中打开,您需要将target="_blank" 添加到form 在页面上,而不是链接本身。

显然您不想在最初呈现页面时这样做,因为导致回发的所有内容都会在新窗口中打开。

请尝试将以下属性添加到您的LinkButton

OnClientClick="$('form').attr('target', 'blank')"

这将在表单通过点击链接发回之前动态设置表单属性。

请注意,这并没有提供您想要的右键单击功能,但它确实可以在左键单击时在新窗口中打开。

如果您无权访问 JQuery,则需要执行类似的操作

protected void Page_PreRender(object se, EventArgs e)
{
    this.Page.Form.ID = "someUniqueID"; // unless your form already has an ID
    yourLinkButton.OnClientClick =
        "document.getElementById('" +
        this.Page.Form.ClientID +
        "').setAttribute('target', '_blank')";
}

【讨论】:

    【解决方案2】:

    来自docs

    使用 LinkBut​​ton 控件在网页上创建一个超链接样式的按钮。 LinkBut​​ton 控件具有与 HyperLink 控件相同的外观,但具有与 Button 控件相同的功能。如果您想在单击控件时链接到另一个网页,请考虑使用 HyperLink 控件。

    由于这实际上并没有执行标准意义上的链接,因此控件上没有 Target 属性(HyperLink 控件确实有一个 Target) - 它试图从文本链接执行回发到服务器。

    根据您要执行的操作,您可以:

    1) 使用 HyperLink 控件,并设置 Target 属性

    2) 为OnClientClick property 提供方法 这会打开一个指向正确位置的新窗口。

    3) 在处理 PostBack 的代码中添加一些 JavaScript 以在 PageLoad 上触发,这将在正确的位置打开一个新窗口。

    如果你喜欢点击链接按钮,然后打开新窗口,

    请看this

    【讨论】:

    • 论坛对我没有帮助..甚至超链接控件也不会触发任何事件..那么我该如何使用超链接而不是链接按钮?
    【解决方案3】:

    像这样插入基本标签

     <head>
        <base target="_blank" />
        </head>
    

    【讨论】:

    • 这不起作用(至少对我来说) - 渲染锚上的引用是 javascript:__doPostBack('ctl00$FeaturedContent$ctl00','') 所以你最终试图在新窗口中调用一个不存在的函数。
    【解决方案4】:

    如果您想使用超链接向页面传递一些信息,请使用 QueryString 在 url 中传递它。

    <asp:HyperLink id="hyperlink1" 
                      NavigateUrl="~/MyPage.aspx?intNewsId=10"
                      Text="ClickMe"
                      Target="_blank"
                      runat="server"/>    
    

    【讨论】:

      【解决方案5】:

      你不能同时拥有它,你必须在两者之间做出选择:

      1) 在当前页面中执行某些代码的链接按钮

      2) 在新窗口中打开另一个页面的超链接

      我猜你想让链接按钮在新页面中执行一些代码,但这是不可能的。

      或者如果你喜欢使用。愤怒标签

      只需渲染一个带有 href 设置为适当 url 的锚并将 target 属性设置为 _blank 它将打开 url 到新窗口

      <a href="urlOfThePage" target="_blank" >Click me</a>
      

      【讨论】:

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