在客户端设置其值后,获取隐藏字段值c#页面加载主页返回空

时间:2015-09-04 12:51:35

标签: javascript asp.net

这是母版页代码:

<head runat="server">
<title></title>
<asp:ContentPlaceHolder ID="head" runat="server">
</asp:ContentPlaceHolder>
<script>
    function getLocation() {
        if (navigator.geolocation) {

            navigator.geolocation.getCurrentPosition(showPosition);

        }
        function showPosition(position) {


        document.getElementById("Long").value =    position.coords.longitude;
        document.getElementById("Lat").value = position.coords.latitude;
        }
    }
</script>
</head>
<body onload="getLocation()">
<form id="form1" runat="server">
<div>
    <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
    </asp:ContentPlaceHolder>
</div>
<input type="hidden" id="Long" name="Long" value=""   runat="server" />
<input type="hidden" id="Lat" name="Lat" value="" runat="server" />
</form>
</body>

这是服务器端页面加载代码:

Context.Response.Write(((HtmlInputHidden)Page.Master.FindControl("Long")).Value)

我在加载后检查了这些dom elments,这就是我所看到的:

  <input name="ctl00$Long" type="hidden" id="Long" value="34.7574951">
  <input name="ctl00$Lat" type="hidden" id="Lat" value="32.003683900000006">

但是当T尝试如上所示检索它们时(C#pageload)我得到字符串为空。

1 个答案:

答案 0 :(得分:1)

服务器端首先执行,然后将生成的标记发送到客户端,其中运行任何客户端脚本。因此,您对执行顺序的想法是错误的。

在这种情况下,您需要使用AJAX或其他一些技巧,例如web socketsSignalR