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 に置き換えて、すべて同じことを行うと、コード ビハインドのクリック イベントが問題なく発生します。JQM ページ内で ASP ImageButton を使用し、VB コード ビハインド ファイルでクリック イベントを保持することはできませんか?

編集 アンドリーア氏の反応に感謝しますが、これらの ImageButtons に関しても、私のページに新しいシナリオ (問題) が浮かび上がります。

ユーザー コントロール内に ImageButton コントロールが含まれています。私のページは、複数の要素を含む単一の ASPX ファイルで <div data-role="page"> あり、それぞれに独自の ID ("page1"、"page2"、"page3" など) があり、JQM のマルチページ機能の標準的な使用法に従います。各「ページ」セクションには、イメージ ボタンを含むユーザー コントロールのインスタンスが含まれます。これはすべてうまく機能しますが、1 つの問題があります。ユーザーがデフォルトの「page1」から別の「ページ」に移動し、画像ボタンの 1 つをクリックすると、コードが起動し、ページがリロードされ、ユーザーがデフォルトに戻ります。ページ - 「ページ 1」。

これは良くありません - ユーザーがボタンを起動してページをリロードし、表示されている「ページ」要素にとどまることができるようにする方法が必要でした - JQMはURLのハッシュタグを使用してこれらの複数のページを実現します - だから私は行を見つけましたページの読み込みイベントに追加したコードは次のとおりです。

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

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

End Sub`

私はもともとユーザーコントロールでラジオボタンを使用していました.JQMは「スキニング」していたのでボタンとして表示されていました.Page_Loadイベントのこの1行で、ユーザーは任意の「ページ」要素とコードビハインドのラジオボタンをクリックできました.ラジオボタンが起動し、ユーザーがクリックしたのと同じ「ページ」要素でページがリロードされます-ラジオボタンをイメージボタンに置​​き換えるのではなく-そのコード行をPage_Loadイベントに追加すると、ImageButtonコントロール完全に機能しなくなります - コードビハインドでもクリックでコードをクリックしても発火しません - また、Page_Load や Page_PreRender などのページレベルのイベントも発生しません - それらをクリックしてもまったく何も起こりません..

これについて何か考えはありますか?

4

2 に答える 2

1

質問の2番目の部分に対処するための新しい回答:

asp.net Web フォームは、jQuery Mobile の複数ページのシナリオでは機能しないことがわかりました。Web フォームでは、すべての Web コントロールが、<form />すべての jQuery Mobile (「仮想」) ページにまたがる必要がある 1 つの要素内に存在する必要があります。<form />これは、jQuery Mobileが適切なレンダリングとポスト パックのために各サブ ページ内に要素を持つ必要があることと真っ向から対立します。

代わりに MVC を検討してください。

于 2012-11-14T17:41:30.060 に答える
0

問題は、が jQuery Mobile によって隠されている<asp:ImageButton />としてレンダリングされることです。<input type="image" />data-role="none" を ImageButton に追加します。これにより、jQuery Mobile はコントロールをそのままレンダリングします。

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