c#中的Accessor Mutators返回错误的值

时间:2014-07-04 06:54:02

标签: c# asp.net .net

我在asp.net(C#)中使用accessor / mutators来分配和获取值。

我有两件事:

protected void ddlDepartments_SelectedIndexChanged(object sender, EventArgs e)
{
    accessVariables.DepID = Convert.ToInt32(ddlDepartments.SelectedValue);
}
protected void chkIsHead_CheckedChanged(object sender, EventArgs e)
{
    Response.Write(accessVariables.DepID);
}

它称之为:

public class AccessibleVariables
{
    public int depID { get; set; }
    public int DepID 
    {
        get { return depID; }
        set { depID = value; }
    }
 }

第二个事件返回0,为什么? 我运行调试器,我检查,(设置)分配真实值,这是完美的,但得不到返回实际值,它总是返回0,为什么?

1 个答案:

答案 0 :(得分:5)

由于http是无状态协议,因此属性值不会在asp.net中的postback内维护。您可以使用ViewState在回发之间保留值。您可以在ViewState上创建一个int属性,它将从getter返回int并使用int来设置ViewState

ViewState["depID"] = "0";   
public int AccessibleVariables
{
    get { return (int) ViewState["depID"]; }
    set { ViewState["depID"] = value; }
}

<强> ViewState

  

简而言之,Microsoft®ASP.NET视图状态是使用的技术   一个ASP.NET网页,用于持久更改Web窗体的状态   跨回发。

<强> Stateless Protocol

  

在计算中,无状态协议是一种通信协议   将每个请求视为与之无关的独立事务   任何先前的请求,以便通信包括独立的   请求和响应对。无状态协议不需要   服务器保留会话信息或每个的状态   多个请求期间的通信伙伴