我在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,为什么?
答案 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 强>
在计算中,无状态协议是一种通信协议 将每个请求视为与之无关的独立事务 任何先前的请求,以便通信包括独立的 请求和响应对。无状态协议不需要 服务器保留会话信息或每个的状态 多个请求期间的通信伙伴