0

ここで間違っています。私は、ViewStateは動作させることはできません。ViewStateは前のページの値を記憶していません。

protected void Page_Init(object sender, EventArgs e) 
{ 
      Method1(); 
} 

private void Method1() 
{ 
    Element.Click += new EventHandler(Button_Click); 
} 
public void Button_Click(object sender, EventArgs e) 
{ 
    if(ViewState["x"] != null) 
       // use ViewState["x"] from previous Page Init 
    //do processing ... 

    //in the end, store value for future use 
    ViewState["x"] = myLabel.Text; 
} 

私は変更を行う場所私はその後、私は変数のViewStateの前回値から読み込まれ、これらの変更の前に、ページをリロードしていますので、最初のページの初期化がトリガされます処理を行い、次に使用するためにその値をオーバーライドします(次のページInitで)。その後、再びオーバーライドします。

問題は私のViewStateのあるnullの場合、それは私が前のページのinit でそれを与えた値を覚えて/保存しないありがとう

+1

のような単純な使用セッション変数あなたの問題が以下の回答によって解決された場合は、それを他のユーザーに受け入れ可能としてください。 –

+0

私はあなたの質問を解決しましたか?それを受け入れられた回答としてマークしてください。 – fuzz

答えて

1

あなたはViewStateように、ページ固有のものであり、実際に格納されていることを行うことができませんレンダリングされたページのHTMLに表示されます。 POSTまたはクエリ文字列に値を渡すか、セッションに格納するか、別のページでアクセスできるasp.netキャッシュに値をキャッシュする必要があります。

ViewStateを使用すると、ポストバック時に同じページにデータを転送できます。 ViewStateを設定し

ポストバックに ViewStateを取得するための

ViewState["FirstName"] = "SuperMan";

string sFirstName = ViewState["FirstName"].ToString();

あなたが別のページにデータを転送するためにコンテキストを使用することができます。あなたが必要とされる共通のデータを保持するためにSession変数を使用することができます

Page1.aspx.cs

this.Context.Items["FirstName"] = "SuperMan";

Page2.aspx.cs

string sFirstName = this.Context.Items["FirstName"].ToString();

特定のユーザーのほぼすべてのページまたはアプリケーション全体に適用されます。 Sessionを設定し

あなたのコードに適用さ

Session["FirstName"] = "SuperMan";

:セッションまでの任意のページからSessionを取得するための

public void Button_Click(object sender, EventArgs e) 
{ 
    if (Session["x"] != null) 
    { 
     // do processing 

     // in the end, store value for future use 
     Session["x"] = myLabel.Text; 
    } 
} 

が有効である:

​​

同じようにCookiesも使用できますが、クッキーはクライアントに保存されます。

+0

Gotnull、ボタンクリックで値をどのように渡す必要がありますか? –

+0

私は既にあなたの質問に答えました。 – fuzz

+0

'ViewState [" x "]'の代わりに 'Session [" x "]'を使ってください。 – fuzz

0

ViewStateのは、ちょうどそのページ上の値を覚えているとセッション変数、クエリ文字列のように、使用するため、別のページに別のセッション状態を値を渡すことができないなど

この

public void Button_Click(object sender, EventArgs e) 
{ 
    if(Session["x"] != null) 
       // use Session["x"] from previous Page Init 
    //do processing ... 

    //in the end, store value for future use 
    Session["x"] = myLabel.Text; 
} 
+0

セッション["x"] = myLabel.Text;プロジェクト内のどこにでも使用できます –

関連する問題