6

我一直在 VB.NET 和 JQM 的网站上工作——一切顺利。

现在,我正在尝试使用诸如以下标签的标准图像按钮:

<asp:ImageButton ID="btnYear" runat="server" ImageUrl="~/images/buttons/year_btn.gif" />

并且在 VB 代码后面的文件中有一个类似于以下的点击事件:

Private Sub btnYear_Click(sender As Object, e As System.Web.UI.ImageClickEventArgs) Handles btnYear.Click    
    Session("TimeFrame") = "YEAR"    
    *do other code* 
End Sub

当我单击图像按钮并跟踪代码时 - 文件背后代码中的页面事件中的所有代码触发(页面加载,页面预渲染等) - 但图像按钮的单击事件永远不会触发。

如果我用标准的 asp:Button 替换 Image 按钮并做同样的事情 - 那么后面代码中的 click 事件就会触发!是否不能在 JQM 页面中使用 ASP ImageButton 并在 VB 代码隐藏文件中保持单击事件?

编辑 非常感谢 andleer 的回应 - 但它给我的页面带来了一个新的场景(问题),也与这些 ImageButtons 有关。

我有一个用户控件中包含的 ImageButton 控件。我的页面是一个包含多个 <div data-role="page"> 元素的 ASPX 文件,每个元素都有自己的 ID(“page1”、“page2”、“page3”等)——遵循 JQM 多页功能的标准用法。每个“页面”部分都包含一个包含图像按钮的用户控件实例。这一切都很好,有一个问题 - 当用户从默认的“page1”导航到任何其他“页面”并单击其中一个图像按钮时,代码触发,页面重新加载 - 并使用户回到默认值页 - “page1”。

这不好 - 我需要一种方法来允许用户触发按钮并重新加载页面并停留在他们正在查看的“页面”元素上 - JQM 使用 URL 中的哈希标签完成这些多个页面 - 所以我找到了一行我添加到页面加载事件的代码如下:

`Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) 处理 Me.Load

    Me.Form.Attributes("onsubmit") = "this.action+=top.location.hash;"

End Sub`

我最初在我的用户控件上使用单选按钮 - JQM 正在“剥皮”,因此它们显示为按钮 - 通过 Page_Load 事件中的这一行,用户可以单击任何“页面”元素和代码后面的单选按钮单选按钮将触发并且页面将与用户重新加载到他们单击的相同“页面”元素上 - 不是用图像按钮替换单选按钮 - 当我将该行代码添加到 Page_Load 事件时,ImageButton 控件完全停止运行 - 当我点击他们点击中的代码时,即使在后面的代码中也不会触发 - 任何页面级事件(例如 Page_Load 或 Page_PreRender)也不会触发 - 现在点击它们绝对没有任何作用....

对此有什么想法吗?

4

2 回答 2

1

解决问题第二部分的新答案:

我发现 asp.net web 表单根本不适用于 jQuery Mobile 多页场景。<form />Web 表单要求所有 Web 控件驻留在需要跨越所有 jQuery Mobile(“虚拟”)页面的单个元素中。这与 jQuery Mobile 需要<form />在每个子页面中包含元素以进行正确渲染和后包直接冲突。

请考虑使用 MVC。

于 2012-11-14T17:41:30.060 回答
0

问题是jQuery Mobile 隐藏的<asp:ImageButton />a 呈现为 a 。<input type="image" />向 ImageButton 添加一个 data-role="none" ,这将导致 jQuery Mobile 按原样呈现控件。

<asp:ImageButton id="MyButton" runat="server" data-role="none" />
于 2012-11-14T05:58:45.827 回答