【发布时间】:2011-10-09 10:33:26
【问题描述】:
我在这个 aspx 页面中有 3 个动态生成的下拉菜单。第二个和第三个是根据第一个的选定值填充的(我有在第一个的 selectedindexchanged 事件中创建第二个和第三个下拉列表的代码)
如何编写代码,以便在我返回页面时,动态下拉菜单保留其选定的值?
【问题讨论】:
我在这个 aspx 页面中有 3 个动态生成的下拉菜单。第二个和第三个是根据第一个的选定值填充的(我有在第一个的 selectedindexchanged 事件中创建第二个和第三个下拉列表的代码)
如何编写代码,以便在我返回页面时,动态下拉菜单保留其选定的值?
【问题讨论】:
我假设当您说“返回”到该页面时,您的意思是您导航到网站上的另一个页面并返回到该页面,它的下拉值将填充什么用户选择。
请记住,HTTP 是一种固有的无状态协议,因为它不会记住回发到服务器之间的数据。为了克服这个限制,ASP.NET 和其他 Web 框架使用各种方法在请求之间保存数据。目前,您依赖作为隐藏变量存储在页面中的“ViewState”,称为 __VIEWSTATE(有时查看页面源以了解字段的外观)此隐藏变量的范围是页面首次加载时并且每次您回发到同一页面时。根据您的描述,您可能需要一个称为 SessionState 或 Cookies 的长期持久性来存储特定 Session 的值。
这是来自 MSDN 的链接,其中包含有关在 ASP.NET 应用程序中保存状态的所有可能方法的有趣信息。如果您还有其他问题,请告诉我。
http://msdn.microsoft.com/en-us/library/75x4ha6s.aspx
--编辑-- 这是有关会话状态的 MSDN 文章的链接。我的建议是小心 Session 状态,只存储绝对需要的东西。另外我建议你有一个包含会话密钥的一堆常量的类。更容易管理
http://msdn.microsoft.com/en-us/library/ms178581.aspx
即代替
string value = Session["Key"];
//Create a class SessionKeys
Class SessionKeys{
public const string SESSION_KEY = "Key"
}
//Now that string is strongly typed and you don't have to worry about misspelling it
string value = Sesssion[SessionKeys.SESSION_KEY];
【讨论】: