我遇到问题,我试图将地址的地理位置保存到文件中。我使用隐藏标签来传输信息。
在客户端按钮事件我有:
function save() {
document.getElementById("hidLat").value = y;
document.getElementById("hidLon").value = x;
<% saveAddress s = save(); %>
}
在c#中我有:
protected saveAddress save()
{
saveAddress s = new saveAddress();
s.latitude = hidLat.Value;
s.longitude = hidLon.Value;
using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\\savedAddresses.txt", true))
{
file.WriteLine(s.latitude + " " + s.longitude);
file.Close();
}
return s;
}
当我点击按钮时,文件被创建但没有任何内容保存到其中。 我这样做是对还是有更好的方法来尝试将用户输入写入文件?
答案 0 :(得分:0)
您确定已设置纬度和经度变量吗?尝试先打印出来.. 代码似乎没问题
答案 1 :(得分:0)
我认为你对网络生命周期感到困惑。在您的特定实例中,这就是正在发生的事情:
在执行页面的过程中,ASPX包含要调用的代码
saveAddress s = save()
通过这种方式,在将页面呈现回客户端之前调用该方法。
当页面最终发送到客户端时,您有一些客户端代码调用function save()
。
我猜你想在javascript函数运行后调用服务器端方法。您有两种选择:
Page.IsPostBack
并尝试调用您的服务器端方法。 save
方法。 答案 2 :(得分:0)
您似乎对在服务器和客户端代码之间传输值感到困惑。看到标记会很有用。我假设您正在使用webforms <asp:Label />
控件。为了将值传输到服务器,您需要发布表单或制作XMLHttpRequest.
还有其他方法,但我们现在只会坚持使用这两种方法。
还要记住,如果这些标签是服务器控件,则它们的值存储在viewstate中。使用javascript修改值不会影响视图状态。我建议将值存储在隐藏表单输入字段中。将保存逻辑添加到保存OnClick
服务器端。
答案 3 :(得分:0)
注释
您不想使用
file.Close();
当您使用“using(){}”
时