0

スクリプトを使用してポストバックを発生させています。コンテキストは次のとおりです。

  • ユーザーがリンクをクリックして、現在の場所を知る必要がある機能を実行する
  • スクリプトはブラウザーから現在の位置を取得します (navigator.geolocation.getCurrentPosition を使用)
  • 場所がある場合(上記の呼び出しは非同期です-ユーザーが場所を共有することに同意するまで待つ必要があります)、スクリプトで場所をサーバーに投稿する必要があります。これは、非表示のリンク ボタンからのポストバックをシミュレートすることで行います。

関連するコードは次のとおりです。

function submitLocation_Inline(position) {
var latitude = position.coords.latitude;
var longitude = position.coords.longitude;
document.getElementById("ctr11837_Locator_hLat").value = latitude;
document.getElementById("ctr11837_Locator_hLng").value = longitude;
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm._doPostBack('ctr11837_Locator_btnSubmitLocation', 'inline');
} 

<a href="javascript:__doPostBack('ctr11837$Locator$btnSubmitLocation','')" id="ctr11837_Locator_btnSubmitLocation"></a>

コード ビハインドには、非表示のリンク ボタン (btnSubmitLocation_Click) のクリック イベントのハンドラーがあります。ただし、これは呼び出されません。ポストバックは問題なく発生しますが、それを処理するには、Page_Load 中に Request["_ EVENTTARGET"] と Request[" _EVENTARGUMENT"] を調べて、必要なポストバックであることを確認する必要があります。

btnSubmitLocation_Click が呼び出されるようにコードを調整するにはどうすればよいですか?

PS - これが関連しているかどうかはわかりません: 非表示のリンクボタンは UpdatePanel 内にあります。

4

1 に答える 1

2

問題は、コントロールの ClientId を送信する __doPostback() を呼び出していることだと思います (asp.net リンク ボタンを使用していると思います)。hreflinkbutton によって自動的に生成されたを見てください。

prm.__doPostBack('ctr11837$Locator$btnSubmitLocation', 'inline')代わりに電話してみてください。

編集: にアンダースコアをドロップしたようですprm.__doPostBack()。コードを確認してください。

于 2012-12-02T01:22:47.933 に答える