__doPostBack未在JavaScript中定义

时间:2013-12-20 04:35:33

标签: c# javascript asp.net

这是我的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', '');


}

2 个答案:

答案 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方法的开头需要两个下划线。