【问题标题】:Retain Dynamic dropdown values保留动态下拉值
【发布时间】:2011-10-09 10:33:26
【问题描述】:

我在这个 aspx 页面中有 3 个动态生成的下拉菜单。第二个和第三个是根据第一个的选定值填充的(我有在第一个的 selectedindexchanged 事件中创建第二个和第三个下拉列表的代码)

如何编写代码,以便在我返回页面时,动态下拉菜单保留其选定的值?

【问题讨论】:

    标签: asp.net drop-down-menu


    【解决方案1】:

    我假设当您说“返回”到该页面时,您的意思是您导航到网站上的另一个页面并返回到该页面,它的下拉值将填充什么用户选择。

    请记住,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];       
    

    【讨论】:

    • 是的,这正是我要找的!您能否以某种方式提供有关如何执行此操作的示例?我怀疑我是否会在其他地方获得此特定场景的代码,从而节省时间!谢谢!
    • 当我返回时,这 2 个下拉菜单会消失,因为我已经在第一个下拉菜单的 selectedindexchanged 事件中对其进行了初始化。还有其他可能的方法吗?
    • 在使用 ASP.NET 时要记住的一点是“页面生命周期”的概念。我真的不能强调这一点。一旦你理解了这个概念,一切都变得可能。如果您想在隐藏的代码中制作动态控件,这一点尤其重要。未创建下拉列表的原因是每次加载页面时都不会触发 IndexChanged 事件。试试这个作为练习。向页面添加一个按钮,使用添加其他两个下拉列表的下拉列表选择某些内容,然后单击该按钮。动态创建的下拉菜单应该会消失。
    • 有用的链接msdn.microsoft.com/en-us/library/ms178472.aspx。你能解释一下为什么下拉菜单会消失吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-04
    • 2019-10-15
    • 2021-02-04
    • 1970-01-01
    • 2016-09-24
    • 1970-01-01
    相关资源
    最近更新 更多