2016-10-25 5 views
0

私はマスターページを含むC#Webサイトを持っています。だから、ユーザーが最初にサイトを開くとき、私はどこにユーザーが住んでいるか教えてくれるスクリプトを実行したい。私はその情報を隠しフィールドに書き出し、その情報を参照する必要があるときはいつでも、この隠されたフィールドから情報を取り出します。一度しか走らないものはどこに置くのですか?

だから、このリファレンスをコードビハインドに入れれば、一度だけ実行されます。私はそれをif (!IsPostBack)protected void master_Page_PreLoad(object sender, EventArgs e)の中に入れてみましたが、うまくいかなかったのです。

提案がありますか?

+1

セッション記憶域を使用して、まだ照会したかどうかを検出し、格納します。あなたはページロードでそれを行うことができます – musefan

+2

なぜフィールドの内容をチェックするだけではないのですか?多分、セッション変数がより適切かもしれません。 –

+1

これはクッキーとして保存することができます。人々はサイトを複数回訪問していることを前提としています –

答えて

0

あなたは、Global.asaxのページでSESSION_START方法で値を指定することができSESSION_START方法はユーザーでログインした後、セッションに格納されている値がされるために一度だけセッションが作成されたときに実行される

void Session_Start(object sender, EventArgs e) 
{ 
    setValue(); 
} 

protected void setValue(){ 
    session["DefaultValue"]="test"; 
} 

アプリケーション全体にアクセスできます。

+0

質問に基づいて、私はこれが動作するべきだと推測します –

+0

サイトにログインが必要な場合は、Cookieまたはユーザープロファイルを使用することもできます。 – pseudocoder

+0

これは一般的な方法であり、通常はSession_Start()に@pseudocoderがある理由が続きます。 –

1

まあ、HiddenFieldはあなたの要求にはうまくいかないでしょう。

まず、望ましい持続性メカニズムを選択することをお勧めします。ここではASP.NETで使用可能なすべての永続性メカニズムを示しています偉大なMSDNのページです:

ASP.NET State Management Overview

は、これはカバー機構のリストです:

  • ビューステート
  • 制御状態
  • 隠しフィールド
  • リストアイテム
  • 枚のクッキー
  • クエリ文字列
  • アプリケーション状態
  • セッション状態
  • プロファイルのプロパティ、これらの中

は、私はあなたの問題について知っているものに基づいて、私はに探してお勧めしますCookie、セッション状態、またはプロファイルのプロパティ。これらの3つのメカニズムは、ユーザーごとにデータを追跡し、Webアプリケーション全体で永続化することができます。

あなたが選んだ方法を実装し、コードを試してみる方法を読んでください。さらに問題がある場合は、新しい質問を投稿してください。

0

データベースからデータにアクセスすると、ログイン後にデータを取得してセッションに格納できます。

Googleマップを使用してデータにアクセスする場合は、マスターページで!Ispostbackがセッション内のデータをチェックしていない場合は、クライアントページからスクリプトを実行して、hiddenfieldに値を保存します。セッションデータがnullの場合は、ポストバック後にセッションの非表示フィールドの値を格納します。

関連する問題