代码之家  ›  专栏  ›  技术社区  ›  Tony Borf

会话问题?

  •  0
  • Tony Borf  · 技术社区  · 16 年前

    我有一个MVC应用程序,它会在20分钟后超时。我将下拉列表的一些值存储在会话变量中。如果用户允许页面超时,然后刷新页面,则下拉列表中没有值。

    最好的办法是什么?

    4 回复  |  直到 16 年前
        1
  •  0
  •   James    16 年前

        2
  •  0
  •   Vinay Sajip    16 年前

    我假设下拉数据来自数据库。如果是这样,则需要重新填充会话。我假设您使用的是Windows身份验证—否则,假设您使用的是基于表单的身份验证,您还必须通过重定向到登录页来让用户再次登录。

    具体如何处理取决于你没有提到的细节。例如,在我的一些项目中,检查session变量是否存在(在对页面的每个非post访问中)就足够了,如果不存在,则用该信息重新填充session。

        3
  •  0
  •   Evgeniy Labunskiy    12 年前

    using System.Runtime.Caching;
    
            public static dynamic Get(string key)
            {
                    ObjectCache cache = MemoryCache.Default;
                    var item = cache.Get(key);
                    return item;
            }
    
            public static void Put(string key, dynamic ddResult)
            {
                    CacheItemPolicy policy = new CacheItemPolicy();
                    policy.AbsoluteExpiration = DateTimeOffset.Now.AddMinutes(1); // expiration in one minute
                    ObjectCache cache = MemoryCache.Default;
                    cache.Set(key, ddResult, policy);
            }
    
        4
  •  -2
  •   Sled bayer    12 年前

    如果要使用数据库作为源来显示下拉列表中的数据,我可以知道它是Windows应用程序还是基于web的应用程序吗

    DropDownList3.DataSource = Class2.details().Tables[0];
    DropDownList3.DataBind();
    

    在这里 Class2 是一个函数名为details的类,我们将使用SQL查询来显示从数据库到下拉列表的数据( SELECT 查询)。

    然后我们将使用dropdownlist的数据作为

    session["anyname"]=dropdownlist3.selecteditem.text;
    

    web.config 文件也。