2011-09-01 2 views
5

私は単純なページを持っている、それは構造だ次のようである(擬似コード):任意のデスクトップブラウザでのUIWebViewとIPhoneコンテンツは、(ASP.NETブラウザの能力の問題)ポストバックしない

<aspx page> 
    <ascx control> 
     <asp:dropdownlist id="dd1" autoPostback=true /> 
     <asp:dropdownlist id="dd2" /> 
    </ascx control> 
</aspx page> 

、DD1のポストバックと"SelectedIndexChanged"サーバーイベントが発生します。しかし、IPhone SafariやIPhone Webviewでは、ポストバックは行われません。ネットワークアクティビティインジケータが表示されていないので、私はこれを知っています。サーバーサイドのすべてのイベントをキャッチし、決してヒットしないサイトにデバッガを接続しました。時々、約2時間に1回、ポストバックはiphoneで動作しますが、非常にまれで断続的です。

Dd1は、日付ドロップダウン内の選択された項目に依存するタイムスロットドロップダウンをロードする日付ドロップダウンです。このフォームは多くの場所で再利用されています。最後の溝がなければ基本構造を変更したくありません。

Javascriptはサファリ設定で有効になっています。

十分に簡単ですか?私はどのようにwebview上でjavascriptのエラーをデバッグするのか把握しようとしていますが、誰もがこの動作を作成した奇妙なことを知っていたのだろうかと思っていた。

答えて

7

IPhones UIWebViewのユーザーエージェントはASP.NET 4.0で認識されませんでした。したがって、asp.netはデフォルトとして機能し、javascriptを含まないページのダウンレベルバージョンとして機能しました。 iPhoneのWebViewのユーザーエージェントは:

のMozilla/5.0(iPhone; U; CPU iPhone OS 4_3_5のMac OS Xのような; EN-US)のAppleWebKit/533.17.9(ヤモリのようにKHTML、)モバイル/ 8L1

この問題を回避するために、私はブラウザの機能を理解しようとしているasp.netをバイパスし、 "Uplevel"バージョンのjavascriptとすべてを提供する "UpLevel"にページの "ClientTarget"プロパティを変更しました。私のページのPage_Loadの中

ソリューション:

Me.ClientTarget = "上位レベル"

または

this.ClientTarget = "上位レベル";

+1

これはハックのようなものです。 App_Browserを修正したり、グローバルブラウザのリストを更新したりするのはよりクリーンです。 http://connect.microsoft.com/VisualStudio/feedback/details/631438 – Brian

+0

のpravav rastogi(Microsoftの作品)の回避策を参照してください。そのリンクのコメントには、次のasp.netランタイムで修正がリリースされるという記述がありますリリース...これは、ネット4.5で修正されましたか? –

+0

申し訳ありませんが、わかりません。インストールして、マシンのブラウザファイルのコピーが更新されているかどうかを確認することができます。 '\ Windows \ Microsoft.NET \ Framework [X1] \ v [X2] \ Config \ Browsers \ *'でdiffを実行します。 – Brian

関連する問題