0

アドレスのジオロケーションをファイルに保存しようとしているところに問題があります。隠しラベルを使用して情報を転送しています。

私が持っているクライアント側のボタンイベントで:

   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

4 に答える 4

0

コメント

使いたくない

file.Close();

「using(){}」を使用する場合

于 2012-11-08T17:02:36.903 に答える
0

Web ライフサイクルについて混乱していると思います。あなたの特定のインスタンスでは、これが起こっています:

  1. ページが要求され、ASP.NET ランタイムがコード ビハインドを読み込み、ページの実行を試みます。
  2. ページを実行する過程で、ASPX には呼び出すコードが含まれています。

     saveAddress s = save()
    

    このようにして、ページがレンダリングされてクライアントに返される前に、そのメソッドが呼び出されます。

  3. ページが最終的にクライアントに送信されると、クライアント側のコードが呼び出されfunction save()ます。

JavaScript関数の実行後にサーバー側のメソッドを呼び出す必要があると思います。次の 2 つのオプションがあります。

  1. 完全なポストバック - フォームをサーバーにポストバックします。ASPX コード ビハインドにはPage.IsPostBack、サーバー側のメソッドを検査して呼び出しを試みるコードが含まれている可能性があります。
  2. Ajax - サイト上の特定のハンドラーに対して ajax リクエストを作成し、サーバー側のsaveメソッドを呼び出すことができます。
于 2012-11-08T16:35:34.957 に答える
0

緯度と経度の変数が設定されていますか? 最初にそれらを印刷してみてください..コードは問題ないようです

于 2012-11-08T16:33:04.877 に答える
0

サーバー コードとクライアント コードの間で値を転送することについて混乱しているようです。マークアップを見ると便利です。<asp:Label />Webフォームコントロールを使用していると仮定しています。値をサーバーに転送するには、フォームを投稿するか、フォームを作成する必要がXMLHttpRequest.あります。他にも方法はありますが、今のところこれらの 2 つに固執します。

また、これらのラベルがサーバー コントロールである場合、それらの値はビューステートに格納されることにも注意してください。JavaScript で値を変更しても、ビュー ステートには影響しません。非表示のフォーム入力フィールドに値を保存することをお勧めします。保存ロジックを保存OnClickサーバー側に追加します。

于 2012-11-08T16:41:06.733 に答える