質問 |
||
| 質問者:titokani | ページごとに有効な変数 | |
|---|---|---|
困り度:
|
こんにちは。 ASP.NET2.0+C#で開発しています。 こういった表現でよいのか、いまいち自信がないのですが、ページごとに有効な変数が欲しい場合には、どうすればよいのでしょうか? 例えば、カウンタを実現しようとして、 .aspx <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Count.aspx.cs" Inherits="Count" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>無題のページ</title> </head> <body> <form id="form1" runat="server"> 「<asp:Label ID="Num" runat="server" />」<br /> <asp:Button ID="CountButton" runat="server" OnClick="Count_Click" Text="カウント" /> </form> </body> </html> .aspx.cs public partial class Count : System.Web.UI.Page { int count; protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { count = 0; Num.Text = count.ToString(); } } protected void Count_Click(object sender, EventArgs e) { count++; Num.Text = count.ToString(); } } と、した場合、countは毎回初期化されてしまうため、ブラウザ上の表示は1から先に進みません。 かといって、 static int count; とすると、複数のブラウザでページを開いた場合に、値を共有してしまいます。 表示が進み、かつ値を共有しないようにするためには、どのような手法を用いればよいのでしょうか? なお、今回は実験のため、int変数一つですが、実際には可変長の配列となる予定です。よろしくお願いします。 |
|
質問投稿日時:08/04/01 11:59 質問番号:3912594 |
||
回答良回答20pt |
|
| 回答者:osakan_budi | 質問にある有効期間の意味がちょっと曖昧です。 別のページに遷移して戻ってきた場合の振る舞いはどうなんでしょうか。1に戻ってもいいのでしょうか。 1に戻ってもよくて、そのページをポストバックしている間のみ有効でいいのであれば、ViewStateを使うのがいいと思います。 あとはSession変数、クッキーあたりが無難じゃないですかね。 |
|---|---|
| 種類:補足要求 どんな人:経験者 自信:自信あり |
|
| |
回答日時:08/04/01 14:52 回答番号:No.1 |
|
| この回答へのお礼 | はい、お察しのとおり、1に戻ってもいいのです。 というか、むしろ1に戻ったほうが好都合ですね。 ViewStateを試してみましたが、うまくいきそうです。ありがとうございました。 |