这是我的ASP网络控件
<a id="geoLocation" class="geolocate box-outline active full">
<div>
<div class="icon"></div>
<div class="header">
Locate Me Now
<asp:Label id="latitude" runat="server" ClientIdMode="Static"></asp:Label><br />
<asp:Label id="longitude" runat="server" ClientIdMode="Static"></asp:Label>
<div style="display:none">
<asp:Button ID="Button2" runat="server" Text="Button" ClientIdMode="Static" />
</div>
</div>
</div>
</a>
我正在尝试做一个Postback,以便能够在我打算隐藏的代码中访问“经度”和“纬度”的值。
这是我正在使用的Javascipt中的回发...我做错了什么?
function showPosition(position) {
// x.innerHTML = "Latitude: " + position.coords.latitude +
// "<br>Longitude: " + position.coords.longitude;
document.getElementById('latitude').innerHTML = position.coords.latitude;
document.getElementById('longitude').innerHTML = position.coords.longitude;
_doPostBack('#geoLocation', '');
}
答案 0 :(得分:4)
首先,确保在__doPostBack
的开头有两个下划线。
其次,__doPostBack
功能仅在页面上至少有一个控件调用Page.RegisterPostBackScript()
时才可用。不幸的是,这种方法是System.Web内部的。
作为一种解决方法,您的控件可以覆盖Render
并调用GetPostBackEventReference
,它会为您调用Page.RegisterPostBackScript()
并返回一些可以忽略的JavaScript:
protected override void Render(HtmlTextWriter writer)
{
this.Page.ClientScript.GetPostBackEventReference(new PostBackOptions(this));
base.Render(writer);
}
第三个(回答你还没有提出的问题),设置Label控件的innerHTML
属性不会使回发时服务器的值可用。您应该使用HiddenField控件并在JavaScript中设置其value
属性。
答案 1 :(得分:0)
试试这个:
_doPostBack('#geoLocation', ''); --> __doPostBack('#geoLocation', '');
在doPostBack方法的开头需要两个下划线。