我一直在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代码后面的文件中保存click事件?
修改 非常感谢andleer他的回复 - 但它带来了我的页面的新方案(问题),也涉及这些ImageButtons。
我在用户控件中包含了ImageButton控件。我的页面是一个包含多个的ASPX文件
<div data-role="page">
其中最重要的,每个都有自己的ID(“page1”,“page2”,“page3”等) - 遵循JQM的多页功能的标准用法。每个“页面”部分包含一个包含图像按钮的用户控件的实例。这一切都运行良好,有一个问题 - 当用户从默认的“page1”导航到任何其他“页面”并单击其中一个图像按钮,代码触发,页面重新加载 - 并使用户返回默认值page - “page1”。
这不好 - 我需要一种方法来允许用户触发按钮并重新加载页面并保持他们正在查看的“页面”元素 - JQM使用URL中的哈希标记完成这些多个页面 - 所以我找到了我添加到页面加载事件中的一行代码:
`受保护的子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”元素上的单选按钮,单选按钮后面的代码将会触发,页面将重新加载用户返回到他们单击的相同“页面”元素 - 不是用图像按钮替换单选按钮 - 当我将该行代码添加到Page_Load事件时, ImageButton控件完全停止运行 - 当我点击其中的代码时,即使在后面的代码中也没有触发 - 也没有任何页面级别的事件,如Page_Load或Page_PreRender - 现在点击它们绝对没有任何意义....
对此有何想法?
答案 0 :(得分:1)
解决问题第二部分的新答案:
我发现asp.net web表单根本不适用于jQuery Mobile多页面场景。 Web表单要求所有Web控件都驻留在需要跨越所有jQuery Mobile(“虚拟”)页面的单个<form />
元素中。这与jQuery Mobile需要在每个子页面中包含<form />
元素以进行正确呈现和发布包装有直接冲突。
考虑使用MVC。
答案 1 :(得分:0)
问题是<asp:ImageButton />
呈现为jQuery Mobile隐藏的<input type="image" />
。向ImageButton添加data-role =“none”,这将导致jQuery Mobile按原样呈现控件。
<asp:ImageButton id="MyButton" runat="server" data-role="none" />