尝试接受用户输入并写入文件

时间:2012-11-08 16:30:58

标签: c# javascript asp.net

我遇到问题,我试图将地址的地理位置保存到文件中。我使用隐藏标签来传输信息。

在客户端按钮事件我有:

   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;
   }

当我点击按钮时,文件被创建但没有任何内容保存到其中。 我这样做是对还是有更好的方法来尝试将用户输入写入文件?

4 个答案:

答案 0 :(得分:0)

您确定已设置纬度和经度变量吗?尝试先打印出来.. 代码似乎没问题

答案 1 :(得分:0)

我认为你对网络生命周期感到困惑。在您的特定实例中,这就是正在发生的事情:

  1. 请求您的页面,ASP.NET Runtime会加载您的代码并尝试执行该页面。
  2. 在执行页面的过程中,ASPX包含要调用的代码

     saveAddress s = save()
    

    通过这种方式,在将页面呈现回客户端之前调用该方法。

  3. 当页面最终发送到客户端时,您有一些客户端代码调用function save()

  4. 我猜你想在javascript函数运行后调用服务器端方法。您有两种选择:

    1. Full PostBack - 您将表单发布回服务器,后面的ASPX代码可以在那里有一些代码来检查Page.IsPostBack并尝试调用您的服务器端方法。
    2. Ajax - 您可以向站点上的特定处理程序发出ajax请求,然后调用服务器端save方法。

答案 2 :(得分:0)

您似乎对在服务器和客户端代码之间传输值感到困惑。看到标记会很有用。我假设您正在使用webforms <asp:Label />控件。为了将值传输到服务器,您需要发布表单或制作XMLHttpRequest.还有其他方法,但我们现在只会坚持使用这两种方法。

还要记住,如果这些标签是服务器控件,则它们的值存储在viewstate中。使用javascript修改值不会影响视图状态。我建议将值存储在隐藏表单输入字段中。将保存逻辑添加到保存OnClick服务器端。

答案 3 :(得分:0)

注释

您不想使用

file.Close();

当您使用“using(){}”