Google地图标记未返回其值

时间:2015-10-28 06:47:18

标签: javascript asp.net google-maps webforms

请考虑以下代码:

在我的.ascx中:

<asp:Label ID="lblLat" runat="server" EnableViewState="false"></asp:Label>
<asp:Label ID="lblLng" runat="server" EnableViewState="false"></asp:Label>

<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">

var latlng = new google.maps.LatLng(5.4149253, 100.3407387);
var map = new google.maps.Map(document.getElementById('map'), {
    center: latlng,
    zoom: 17,
    mapTypeId: google.maps.MapTypeId.ROADMAP
});
var marker = new google.maps.Marker({
    position: latlng,
    map: map,
    draggable: true
});
google.maps.event.addListener(marker, 'dragend', function (event) {
    marker.setPosition(event.latLng);
    var yeri = event.latLng;
    document.getElementById('lblLat').value = yeri.lat().toFixed(6);
    document.getElementById('lblLng').value = yeri.lng().toFixed(6);
});

</script>

在地图上拖动标记并提交后,

在我的.ascx.cs中:

string lat = lblLat.Text;
string lng = lblLng.Text; 

这两行返回空值。我可以知道我做错了什么吗?它只是没有从地图上的标记中获取值。

1 个答案:

答案 0 :(得分:0)

label转换为spanspandiv等html元素没有ViewState这些文字/ html都没有发送到服务器端。提交的form元素是input元素,hidden field是其中之一。 asp.net维护隐藏字段的ViewState。我担心你必须使用隐藏字段来维护回发之间的标签值。

在.ascx中:

<asp:Label ID="lblLat" runat="server" EnableViewState="false"></asp:Label>
<asp:Label ID="lblLng" runat="server" EnableViewState="false"></asp:Label>
<!-- 1. Add hidden fields to store and submit the latlng values -->
<asp:HiddenField id="lblLatHidden" runat="server" />
<asp:HiddenField id="lblLngHidden" runat="server" />

<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">

var latlng = new google.maps.LatLng(5.4149253, 100.3407387);
var map = new google.maps.Map(document.getElementById('map'), {
    center: latlng,
    zoom: 17,
    mapTypeId: google.maps.MapTypeId.ROADMAP
});
var marker = new google.maps.Marker({
    position: latlng,
    map: map,
    draggable: true
});
google.maps.event.addListener(marker, 'dragend', function (event) {
    marker.setPosition(event.latLng);
    var yeri = event.latLng;
    document.getElementById('lblLat').innerHtml = yeri.lat().toFixed(6);
    document.getElementById('lblLng').innerHtml = yeri.lng().toFixed(6);
    // 2. update the hidden fields via javascript
    document.getElementById('lblLatHidden').value = yeri.lat().toFixed(6);
    document.getElementById('lblLngHidden').value = yeri.lng().toFixed(6);
});

</script>

在我的.ascx.cs中:

string lat = lblLatHidden.Value;
string lng = lblLngHidden.Value;