【问题标题】:Not able to click asp link button无法单击asp链接按钮
【发布时间】:2013-06-07 04:53:54
【问题描述】:

我有一个链接按钮显示上传文档的路径..标签结构是这样的

            <tr>
                <td>
                    <asp:Label ID="lblDoc" runat="server" Text="Document:"></asp:Label>
                </td>
                <td colspan="3">
                    <asp:LinkButton ID="lnkDoc" runat="server" PostBackUrl="~/Transfer.aspx"></asp:LinkButton>
                </td>
            </tr>

我正在服务器端处理 onclick 事件:

Private Sub lnkDoc_Click(sender As Object, e As System.EventArgs) Handles lnkDoc.Click
    ClientScript.RegisterStartupScript(Me.GetType(), "onclick", "<script language=javascript>window.open('OpenDocument.aspx?DocumentPath=" & System.Web.HttpUtility.UrlEncode(lnkDoc.Text) & "', 'OpenUploadedDoc','left=0px,top=0px,width='+screen.availWidth+',height='+screen.availHeight+',menubar=yes,resizable=yes,scrollbars=1')</script>")
End Sub

但我无法单击文档路径。当我将鼠标悬停在链接按钮上时,没有任何反应。可能是什么问题?

编辑: 当我尝试在客户端添加 onclick 时,出现以下错误。

Transfer.Private Sub lnkDoc_Click(sender As Object, e As System.EventArgs)' 在此上下文中不可访问,因为它是“私有”的。

【问题讨论】:

  • lnkDoc 的 text 属性在哪里
  • 我没有添加。
  • 移除私有修饰符。使其受到保护。然后从链接按钮调用函数。
  • 使用受保护也不起作用...
  • "我正在服务器端处理 onclick 事件" - 不,您是在客户端处理它,或者至少您尝试通过设置 JS 处理程序来这样做.

标签: asp.net linkbutton


【解决方案1】:

我认为您的页面上有一些验证,所以点击事件不会触发,所以请将 LinkBut​​ton 的 Causesvalidation="false" 设置为以下代码并再次检查:

<asp:LinkButton ID="lnkDoc" causesvalidation="false" runat="server" PostBackUrl="~/Transfer.aspx"></asp:LinkButton

谢谢, 希特什

【讨论】:

    【解决方案2】:

    我已经解决了这个问题。问题在于在 HTML 中呈现链接按钮(在面板内)。所以我把它放在了Panel外面。

        </asp:Panel>
        <div>
                <asp:Label ID="lblDoc" style="margin-left: 3px" Text="Document: " runat="server"></asp:Label>
                <asp:LinkButton ID="lnkDoc" style="margin-left:100px" runat="server" PostBackUrl="~/Transfer.aspx"></asp:LinkButton>
            </div>
    

    感谢大家的建议..!

    【讨论】:

      【解决方案3】:

      ASPX

      <tr>
                      <td>
                          <asp:Label ID="lblDoc" runat="server" Text="Document:"></asp:Label>
                      </td>
                      <td colspan="3">
                          <asp:LinkButton ID="lnkDoc" CausesValidation="false" runat="server" Text="Test"></asp:LinkButton>
                      </td>
                  </tr>
      

      背后的代码

          Private Sub lnkDoc_Click(sender As Object, e As System.EventArgs) Handles lnkDoc.Click
               ClientScript.RegisterStartupScript(Me.GetType(), "onclick", "<script language=javascript>alert('hi')</script>")
      End Sub
      

      【讨论】:

        【解决方案4】:

        尝试在 .aspx 页面上提供 onclick 事件,并检查它..

        我希望它会这样工作

        【讨论】:

        • 您好,它不接受客户端的 onclick 事件,因为我在服务器端以 Private 身份访问了该事件。
        【解决方案5】:
        Protected Sub lnkDoc_Click(sender As Object, e As System.EventArgs) Handles lnkDoc.Click
            ClientScript.RegisterStartupScript(Me.GetType(), "onclick", "<script language=javascript>window.open('OpenDocument.aspx?DocumentPath=" & System.Web.HttpUtility.UrlEncode(lnkDoc.Text) & "', 'OpenUploadedDoc','left=0px,top=0px,width='+screen.availWidth+',height='+screen.availHeight+',menubar=yes,resizable=yes,scrollbars=1')</script>")
        End Sub
        

        注意:让您的活动受保护而不是私人

        您还需要将点击事件添加到链接按钮。

          <asp:LinkButton ID="lnkDoc" runat="server" PostBackUrl="~/Transfer.aspx" onclick="lnkDoc_Click"></asp:linkbutton>
        

        【讨论】:

          【解决方案6】:

          向按钮添加文本并公开处理程序。

          【讨论】:

            【解决方案7】:

            您需要将点击事件添加到链接按钮。

            <asp:LinkButton ID="lnkDoc" runat="server"  onclick="lnkDoc_Click"></asp:linkbutton>
            

            你必须写的文件后面的页面

             Protected Sub lnkDoc_Click((ByVal sender As Object, ByVal e As System.EventArgs) Handles lnkDoc.Click
                    // code you want to run
                End Sub
            

            【讨论】:

            • 嗨,如果我这样做,我会收到此错误。 “错误 117 'Transfer.Private Sub lnkDoc_Click(sender As Object, e As System.EventArgs)' 在此上下文中不可访问,因为它是 'Private'”
            • 我在答案中添加了页面隐藏文件的代码。请检查一下。
            • 公开 lnkDoc_Click 方法
            • 我注意到在您的链接按钮代码中您没有设置按钮的 Text 属性。其次,您提到了 PostBackUrl,它将页面回发到另一个页面。请设置 Text 属性并删除 PostBackUrl url 属性。你的链接按钮代码应该是
            【解决方案8】:

            也许您想设置LinkButton.OnClientClick 属性?它让您为呈现的链接按钮控件指定客户端处理程序。 看看:

            <asp:linkbutton id="LinkButton1" text="Open Web site" onclientclick="Navigate()" onclick="LinkButton1_Click" runat=Server /> 
            

            这里Navigate() 是一个点击时调用的JavaScript 函数,LinkButton1_Click 是一个服务器端事件处理程序。

            您想在用户单击链接时打开一个新的浏览器窗口来显示一个文档,对吧? 因此,更好的方法是使用documentPath 参数(在服务器端设置)创建 JavaScript 函数。不需要乱七八糟的RegisterStartupScript。你现在似乎在绕圈子跑。退后一步,重新考虑您真正希望您的代码做什么。

            【讨论】:

            • 它有效,不幸的是我现在无法访问 Visual Studio,但请相信我。您可以使用 OnClientClick 设置参数化客户端事件处理程序 - 这就是您想要的。
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-07-10
            • 1970-01-01
            • 1970-01-01
            • 2019-07-16
            • 1970-01-01
            相关资源
            最近更新 更多