C# 客户端与服务器之间的代码隐藏
我正在编写一个web应用程序,检索用户坐标,检查天气预报并返回有效温度。所有这些都需要一次点击完成 到目前为止,我所做的是:使用Javascript获取位置,并获取该位置的预测。我的问题是,我找不到任何方法将JS坐标返回到Page_load中的服务器代码隐藏。我见过很多向导在页面加载后使用按钮来使用坐标。但这不是我的选择 问题是javascript似乎是在每个页面事件之后完成的。因此,在页面加载完成之前,我无法使用该位置。即使我将坐标传递给文本框 以下是我的javascript:C# 客户端与服务器之间的代码隐藏,c#,javascript,asp.net,geolocation,C#,Javascript,Asp.net,Geolocation,我正在编写一个web应用程序,检索用户坐标,检查天气预报并返回有效温度。所有这些都需要一次点击完成 到目前为止,我所做的是:使用Javascript获取位置,并获取该位置的预测。我的问题是,我找不到任何方法将JS坐标返回到Page_load中的服务器代码隐藏。我见过很多向导在页面加载后使用按钮来使用坐标。但这不是我的选择 问题是javascript似乎是在每个页面事件之后完成的。因此,在页面加载完成之前,我无法使用该位置。即使我将坐标传递给文本框 以下是我的javascript: <scr
<script type="text/javascript" id="getCord">
if(typeof navigator.geolocation === 'undefined')
{
alert("Geolocation services are not supported by your web browser");
}
else
{
navigator.geolocation.getCurrentPosition(handleLocation, handleError);
}
function handleLocation(position)
{
var lat = position.coords.latitude;
document.getElementById('<%= latTextBox.ClientID %>').value = lat;
var lon = position.coords.longitude;
document.getElementById('<%= lonTextBox.ClientID %>').value = lon;
}
function handleError(error)
{
switch (error.code)
{
case error.TIMEOUT:
alert('Timeout');
break;
case error.POSITION_UNAVAILABLE:
alert('Position unavailable');
break;
case error.PERMISSION_DENIED:
alert('Permission denied');
break;
case error.UNKNOWN_ERROR:
alert('Unknown error');
break;
}
}
</script>
我已经搜索了一个多星期来寻找这个问题的答案,所以我希望我不会得到一些到一个知名网站的简单链接来解释这个问题。JavaScript将在服务器端将内容发送到客户端后,每次页面发回时运行。这就是ASP.NET回发模型的工作原理。我建议你弄清楚服务器端需要发生什么,客户端需要发生什么,这样你就可以很好地分离关注点。这是一个很好的关联。在页面加载完成之前,有没有办法使用HTML5地理位置?或者换句话说,在应用程序执行第一次回发之前使用位置数据?因此,如果在回发之后运行javascript,我可以使用回发结束回发,这样我就可以使用Page_load中的坐标了吗?我会稍微改变架构。移动关键服务,以便AJAX可以调用它们(将服务放入)。然后在通过HTML5获得位置后,使用JavaScript和AJAX调用这些web服务函数(使之更容易)。如果我理解正确,我应该将codebehind方法放在web服务文件中,然后在JavaScript文件中调用它们?应该使用jquery.ajax调用这个web服务吗?
private string lat = "63.4164148";
private string lon = "10.409051999999999";
private string xmlData = "";
protected void Page_Load(object sender, EventArgs e)
{
if(!lonTextBox.Text.Equals(""))
{
lon = lonTextBox.Text;
}
if(!latTextBox.Text.Equals(""))
{
lat = latTextBox.Text;
}
maps.HRef = "maps.google.com/maps?z=12&t=m&q=loc:" + lat + "+" + lon;
loadXML();
}