请考虑以下代码:
在我的.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;
这两行返回空值。我可以知道我做错了什么吗?它只是没有从地图上的标记中获取值。
答案 0 :(得分:0)
label
转换为span
,span
或div
等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;