使用JavaScript执行ASP.NET回发(单击LinkBut​​ton) - 发生回发但不发生Click事件

时间:2012-12-01 22:47:35

标签: javascript asp.net postback pagerequestmanager

我正在使用一些脚本来引发回发。以下是上下文:

  • 用户点击链接以执行需要了解其当前位置的功能
  • 脚本从浏览器获取当前位置(使用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)上有click事件的处理程序。然而,这从未被称为。回发确实发生了,但是要处理它我必须在Page_Load期间检查Request [“_ EVENTTARGET”]和Request [“ _EVENTARGUMENT”]以验证它是我想要的回发。

我如何调整代码以调用btnSubmitLocation_Click?

PS - 不确定这是否相关:隐藏的链接按钮位于UpdatePanel内。

1 个答案:

答案 0 :(得分:2)

我认为问题在于你正在调用__doPostback()发送控件的ClientId(我想你使用的是asp.net链接按钮)。只需查看链接按钮自动生成的href即可。

请尝试拨打prm.__doPostBack('ctr11837$Locator$btnSubmitLocation', 'inline')

编辑:看起来您在prm.__doPostBack()中删除了下划线,请检查您的代码。