0

次のasp.netページがあるとします。

public partial class SamplePage : System.Web.UI.Page
{
    private int UserID;

    protected void Page_Load(object sender, EventArgs e)
    {
    }

    protected void btnSearchUser_Click(object sender, EventArgs e)
    {
       UserID = 5;
    }

    protected void btnSubmit_Click(object sender, EventArgs e)
    {
        Response.Write(UserID.ToString());
    }
}

ただし、UserID は常に 0 です。常に 5 になるようにするにはどうすればよいですか?

4

2 に答える 2

2

ボタンをクリックするとポストバックが発生し、HTTP プロトコルはステートレスであるため、ポストバック中にデータが常に失われるためです。したがって、その値を維持するには、その UserID をビューステートに格納する必要があります。それが、Asp に State Mangement の概念がある理由です。 。ネット。ただし、このように達成できます...

public partial class SamplePage : System.Web.UI.Page
{
    int UserID;
  protected void Page_Load(object sender, EventArgs e)
  {

  }
 protected void btnSearchUser_Click(object sender, EventArgs e)
 {
    UserID=5;
    ViewState["UserID"] = UserID;
 }
 protected void btnSubmit_Click(object sender, EventArgs e)
 {
    if(ViewState["UserID"]!=null)
    Response.Write(ViewState["UserID"].ToString());
 }
}
于 2012-07-26T09:10:50.193 に答える
0

ポストバック間でデータを保持するには、データを現在のコントロールのビュー ステートに配置する必要があります。

private int UserID
{
    get
    {
        return this.ViewState["UserID"] as int? ?? -1; // if data is missing, default value -1 will be returned
    }
    set
    {
        this.ViewState["UserID"] = value;
    }
}
于 2012-07-26T09:13:45.597 に答える