※ ChatGPTを利用し、要約された質問です(原文:ページごとに有効な変数)
ASP.NET2.0+C#でページごとに有効な変数を作成する方法
このQ&Aのポイント
ASP.NET2.0+C#でページごとに有効な変数を作成する方法を教えてください。
カウンタを実現したい場合、毎回初期化されずに値を共有せずに表示が進める方法を教えてください。
実際には可変長の配列を使用する予定です。それに対応する方法も教えてください。
こんにちは。
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変数一つですが、実際には可変長の配列となる予定です。よろしくお願いします。
お礼
はい、お察しのとおり、1に戻ってもいいのです。 というか、むしろ1に戻ったほうが好都合ですね。 ViewStateを試してみましたが、うまくいきそうです。ありがとうございました。