为什么由ASP触发代码一次:ImageButton单击未触发

时间:2013-09-30 13:17:48

标签: asp.net vb.net mobile jquery server-sent-events

我遇到了与另一个问题中描述的问题类似的问题:aspnet webforms disable button on submit。在添加jQuery和jQuery mobile之前,我的ASP.NET Web Forms网站工作正常。使用NuGet安装这些软件包后,将忽略我的图像按钮的代码。在我设置UseSubmitBehavior="true"之前,一个简单的按钮与图像按钮有类似的问题。禁用jQuery Mobile足以重新启用按钮功能。还有一个奇怪的问题,即IE10的“查看源”返回上一页的标记,而开发者菜单显示实际的XHTML - 我不知道这是否相关。

我的代码通常应该在图片按钮点击Protected Sub BTNtoggleHole_Click(sender As Object, e As ImageClickEventArgs) Handles BTNtoggleHole.Click后运行,但它拒绝,所以我强制它在Public Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load中运行。我缺少一些页面生命周期的东西吗?

以下是不再触发任何服务器端代码的按钮:

<asp:ImageButton ID="BTNtoggleHole" runat="server" Style="float: right;" ImageUrl="~/Images/Buttons/Handicaps/9-hole-toggle.png" CausesValidation="False" ClientIDMode="Inherit" AlternateText="18/9 hole toggle" />

单击该按钮会导致回发,无论jQuery是否被注释掉,不存在或被禁用。

1 个答案:

答案 0 :(得分:0)

我遇到了与LinkBut​​tons类似的东西。事实证明,某些移动浏览器以及控件的javascript处理方式存在问题。您可以为某些浏览器设置ClientTarget =“uplevel”来解决问题。我在我的页面的基类中添加了以下内容,所以要直截了当:

    ' HACK: This is needed to get LinkButtons working in Chrome for Mobile (on iOS)
    ' This has to be in the page and cannot be in the masterpage or control.
    ' https://stackoverflow.com/questions/11591776/chrome-on-ipad-not-working-with-asp-net-4
    Protected Overrides Sub OnPreInit(ByVal e As System.EventArgs)
        If Request.UserAgent IsNot Nothing AndAlso _
            (Request.UserAgent.IndexOf("AppleWebKit") > -1 OrElse _
             Request.UserAgent.IndexOf("chrome") > -1 OrElse _
             Request.UserAgent.IndexOf("crios") > -1) Then
            Me.ClientTarget = "uplevel"
        End If
        MyBase.OnPreInit(e)
    End Sub

同样,这适用于LinKButtons,但ImageButton可能非常相似。有关详细信息,请参阅此SO问题:Chrome on iPad not working with ASP.NET 4