【问题标题】:link button property to open in new tab?链接按钮属性以在新选项卡中打开?
【发布时间】:2010-04-14 11:56:20
【问题描述】:

在我的应用程序中,我有一些链接按钮,但是当我右键单击它们时,我无法(它们处于禁用模式)找到菜单项 Open in new tabOpen in new window

如何显示这些菜单项?

代码示例:

<asp:LinkButton id="lbnkVidTtile1" runat="Server" CssClass="bodytext" Text='<%#Eval("newvideotitle") %>'  />

【问题讨论】:

    标签: asp.net


    【解决方案1】:

    来自docs

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

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

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

    1. 使用HyperLink 控件,并设置Target 属性
    2. OnClientClick property 提供一个方法,该方法可以在正确位置打开一个新窗口。
    3. 在处理 PostBack 的代码中添加一些 JavaScript 以在 PageLoad 上触发,这将在正确的位置打开一个新窗口。

    【讨论】:

    • 我可以在链接按钮中获取它吗,因为我正在使用命令参数传递一些值,它不在超链接中,即使点击事件也不存在超链接。 Zhaph-Ben 先生
    【解决方案2】:

    这是你的标签。

    <asp:LinkButton ID="LinkButton1" runat="server">Open Test Page</asp:LinkButton>
    

    这是你的代码在后面的代码。

    LinkButton1.Attributes.Add("href","../Test.aspx")
    LinkButton1.Attributes.Add("target","_blank")
    

    希望这对某人有所帮助。

    编辑 要对模板字段中的链接按钮执行相同操作,请使用以下代码。

    使用 GridView_RowDataBound 事件查找链接按钮。

    Dim LB as LinkButton = e.Row.FindControl("LinkButton1")         
    LB.Attributes.Add("href","../Test.aspx")  
    LB.Attributes.Add("target","_blank")
    

    【讨论】:

    • 我想在 GridView 的 asp:TemplateField 中使用它。
    • 可以的。将 LinkBut​​ton1 添加到您的模板字段中。使用 GridView_RowDataBound 事件查找链接按钮 - 将 LB 调暗为 LinkBut​​ton = e.Row.FindControl("LinkBut​​ton1") 和 LB.Attributes.Add("href","../Test.aspx") 和 LB.Attributes.Add( “目标”,“_blank”)。
    • 将此评论作为您的答案。
    • 我认为这是最好的解决方案。详细而中肯!
    【解决方案3】:

    尝试添加以下 onClientClick 事件。

    OnClientClick="aspnetForm.target ='_blank';"

    点击它会调用 Javascript 函数并在新闻标签中打开相应的链接。

    <asp:LinkButton id="lbnkVidTtile1" OnClientClick="aspnetForm.target ='_blank';" runat="Server" CssClass="bodytext" Text='<%# Eval("newvideotitle") %>'  />
    

    【讨论】:

      【解决方案4】:

      这并不完美,但它确实有效。

      <asp:LinkButton id="lbnkVidTtile1" runat="Server" 
          CssClass="bodytext" Text='<%# Eval("newvideotitle") %>'
          OnClientClick="return PostToNewWindow();"  />
      
      <script type="text/javascript">
      function PostToNewWindow()
      {
          originalTarget = document.forms[0].target;
          document.forms[0].target='_blank';
          window.setTimeout("document.forms[0].target=originalTarget;",300);
          return true;
      }
      </script>
      

      【讨论】:

      • 我更喜欢这个解决方案,因为它设置了这个目标技巧的超时时间。如果未设置超时时间,则在此时间点之后单击的每个链接都将在新窗口中打开。
      【解决方案5】:
      1. LinkBut​​ton 执行 HTTP POST 操作,此处不能更改 post 目标。
      2. 并非所有浏览器都支持将表单发布到新的目标窗口。
      3. 要发布它,您必须更改“FORM”的目标。
      4. 您可以使用一些 javascript 解决方法来更改您的 POST 目标,通过更改表单的目标属性,但是浏览器会向用户发出警告(IE 会),该页面正在尝试在新窗口上发布数据,您想要继续等。

      尝试在生成的aspx中找出你的表单元素的ID,你可以改变目标,比如......

      getElementByID('theForm').target = '_blank' or 'myNewWindow'
      

      【讨论】:

        【解决方案6】:

        当 LinkBut​​ton Enabled 属性为 false 时,它​​只会呈现标准超链接。当您右键单击任何禁用的超链接时,您将无法打开任何内容。

        试试

        lbnkVidTtile1.Enabled = true;
        

        如果我误解了,我很抱歉。我可以确保您了解 LinkBut​​ton 的用途吗?它是给一个超链接的外观,但一个按钮的行为。这意味着它将有一个锚标记,但是连接了 JavaScript 来执行对页面的 PostBack。如果你想链接到另一个页面,那么推荐here 您使用标准的超链接控件。

        【讨论】:

        • 先生。 Daniel Dyson 你给的代码 lbnkVidTtile1.Enabled = true;是否在链接按钮点击事件中?
        • PageLoad 事件在后面的代码中。您不必这样做,因为默认值为 true。你能解释一下链接按钮是如何被禁用的吗?
        • 先生。丹尼尔戴森我想你不明白我的问题。当我们打开任何网站时,可能会有一个链接按钮,当我们右键单击它并选择我的链接按钮中需要的“打开链接新标签”时。显示我的链接按钮没有得到那个(打开链接新标签)
        【解决方案7】:

        它会引发错误。

        Microsoft JScript 运行时错误:“aspnetForm”未定义

        【讨论】:

          【解决方案8】:
           <asp:LinkButton ID="LinkButton1" runat="server" target="_blank">LinkButton</asp:LinkButton>
          

          使用 target="_blank" 因为它会创建锚标记。为上述代码生成了以下 HTML

          <a id="ctl00_ContentPlaceHolder1_LinkButton1" target="_blank" href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$LinkButton1','')">LinkButton</a>
          

          【讨论】:

          • 嗯,这确实会按照您的说明呈现标记,但会打开一个空白窗口,并且不执行 PostBack,所以不太理想;)
          • 它对我不起作用。因为我在 Grd 视图中使用链接按钮
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-07-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-04-25
          • 1970-01-01
          相关资源
          最近更新 更多