访问asp.net中的javascript变量codebehind

时间:2017-04-18 19:07:52

标签: javascript c# asp.net geolocation pageload

我需要在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;

}

当我运行页面时,我在浏览器中检查时会在隐藏字段中获取值。

enter image description here

但无法访问后面的代码中的隐藏字段值。 Response.Write为空,lblloc.text为空。

可能是什么问题。

3 个答案:

答案 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);