我对 DropDownList 回发有一个奇怪的问题。
我在 asp.net 母版页中有一个 DropDownList,其中包含一些状态名称,例如:
- 文本 [纽约] - 值 [0]
- 文本 [新泽西] - 值 [1]
drpTowns.DataSource = objTown.GetAllStates();
drpTowns.DataTextField = "Name";
drpTowns.DataValueField = "Id";
drpTowns.DataBind();
在母版页后面的代码中,我有一个 DropDownList_SelectedIndexChanged 事件,我在其中将下拉列表的 SelectedValue 设置在一个持有会话的变量中。像下面
protected void drpTowns_SelectedIndexChanged(object sender, EventArgs e)
{
Globals.DefaultTown = Convert.ToInt32(drpTowns.SelectedValue);
}
Globals.DefaultTown 的定义写在 App_Code Globals.cs 类中,如下所示:
private static int _defaultTown = Convert.ToInt32(ConfigurationManager.AppSettings["DefaultTown"]);
public static int DefaultTown
{
get
{
if (HttpContext.Current.Session["DefaultTown"] == null)
return _defaultTown;
else
return Convert.ToInt32(HttpContext.Current.Session["DefaultTown"]);
}
set
{
HttpContext.Current.Session["DefaultTown"] = value;
}
}
现在我想在内容页面(Default.aspx)中检索 Globals.DefaultTown 的值。我这样做如下:
Response.Write("Default Town Is: " + Globals.DefaultTown + "<br />");
现在,每当我从下拉列表中选择状态时,Globals.DefaultTown 不会立即更新,就像默认情况下为 DefaultTown 设置的 Selected State 一样,但是当我从列表中选择第二个状态时,它仍然给出第一个状态的 id,现在当我从列表中选择第三个状态时,它会给出第二个状态的 id,当我从列表中选择第一个状态时,它会给出第三个状态的 id,即它不会当场更新 DefaultTown 变量。
谁能告诉我这会出什么问题