我需要在page_load上将地理位置(lat,long)存储到db表。
我使用这个脚本。
<body onload="getLocation()">
<p>Click the button to get your coordinates.</p>
<%--<button onclick="getLocation()">Try It</button>--%>
<p id="demo"></p>
<form id="form1" runat="server">
<div>
<p>
<asp:HiddenField ID="hdnLocation" ClientIDMode="Static" runat="server" />
<asp:Label ID="lblloc" runat="server"></asp:Label>
<asp:TextBox ID="txtloc" runat="server"></asp:TextBox>
<asp:Button ID="btnLoc" text="submit" runat="server" OnClick="btnLoc_Click" />
</p>
</div>
</form>
<script>
var x = document.getElementById("demo");
function getLocation() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(showPosition);
} else {
x.innerHTML = "Geolocation is not supported by this browser.";
}
}
function showPosition(position) {
x.innerHTML = "Latitude: " + position.coords.latitude +
"<br>Longitude: " + position.coords.longitude;
$("[id*=hdnLocation]").val(position.coords.latitude + ' ' + position.coords.longitude);
// $("[id*=btnLoc]").trigger("click");
}
</script>
</body>
</html>
这是我背后的代码 public partial class getLocation:System.Web.UI.Page
{ protected void Page_Load(object sender,EventArgs e) {
lblloc.Visible = true;
lblloc.Text = hdnLocation.Value;
txtloc.Text = hdnLocation.Value;
}
当我运行页面时,我在浏览器中检查时会在隐藏字段中获取值。
但无法访问后面的代码中的隐藏字段值。 Response.Write为空,lblloc.text为空。
可能是什么问题。
答案 0 :(得分:0)
你需要在代码后面的id之前使用它。
HTML
<asp:HiddenField ID="hdnLocation" runat="server" />
CODE BEHIND
var value = this.hdnLocation.Value;
示例是Here
答案 1 :(得分:0)
为了使您当前的jQuery选择器正常工作,您的HTML元素需要将ClientIDMode属性设置为“Static”。
对于.NET中的服务器元素,服务器ID和客户端ID是两个非常不同的东西。这可以确保它们与此元素相同。
<asp:HiddenField ID="hdnLocation" runat="server" ClientIDMode="Static" />
答案 2 :(得分:0)
这应该有效:
HTML
<script type="text/javascript">
function abc()
{
var str="value";
document.getElementById("Hidden1").value=str;
}
</script>
<body>
<form id="form1" runat="server">
<div>
<input id="Hidden1" type="hidden" runat="server" />
<asp:Button ID="Button1" runat="server" OnClientClick="abc()" Text="Button"
onclick="Button1_Click" />
</div>
</form>
</body>
背后的代码
Response.Write(Hidden1.Value);