听起来您可能未正确使用UpdatePanel功能。如果您将UpdatePanel设置为在子事件触发事件时进行更新,则仅UpdatePanel应该刷新,而不刷新整个页面。下面的代码的行为似乎与您想要的类似。更改下拉菜单时,只有更新面板会发回到服务器上,刷新页面时,您可以从会话中获取值。
ASPX代码
<form id="form1" runat="server"> <asp:scriptManager ID="scriptManager1" runat="server"> </asp:scriptManager> <div> Current Time: <asp:Label ID="lblTime" runat="server" /><br /> Session Value: <asp:Label ID="lblSessionValue" runat="server" /><br /> <br /> <asp:UpdatePanel ID="upSetSession" runat="server"> <ContentTemplate> <asp:DropDownList ID="ddlMyList" runat="server" onselectedindexchanged="ddlMyList_SelectedIndexChanged" AutoPostBack="true"> <asp:ListItem>Select One</asp:ListItem> <asp:ListItem>Maybe</asp:ListItem> <asp:ListItem>Yes</asp:ListItem> </asp:DropDownList> </ContentTemplate> <Triggers> <asp:AsyncPostBackTrigger ControlID="ddlMyList" EventName="SelectedIndexChanged" /> </Triggers> </asp:UpdatePanel> </div></form>
后面的代码
protected void Page_Load(object sender, EventArgs e) { this.lblTime.Text = DateTime.Now.ToShortTimeString(); if (Session["MyValue"] != null) this.lblSessionValue.Text = Session["MyValue"].ToString(); } protected void ddlMyList_SelectedIndexChanged(object sender, EventArgs e) { Session.Remove("MyValue"); Session.Add("MyValue", this.ddlMyList.SelectedValue); }


