C# 在asp.net页面上保存和调用选定复选框的最佳做法

C# 在asp.net页面上保存和调用选定复选框的最佳做法,c#,asp.net,configuration,C#,Asp.net,Configuration,我正在寻找将一系列值从一个web会话持续到下一个会话的最佳方法。我将填充一个复选框列表,并希望将最后一组选中的复选框保留到下一个会话。(这意味着为用户节省时间,因为他们可能总是选择相同的复选框子集。) 我将遍历复选框列表,并将所选值放入arraylist 在哪里可以预先列出这组数据?我考虑将对象存储到数据库中,或者可能在服务器上存储一个XML文件。我还考虑将数据推送到web.config,但希望避免重新启动应用程序 有什么意见或建议吗 短暂性脑缺血发作 J我的方法是将复选框持久化到数据库中的布尔

我正在寻找将一系列值从一个web会话持续到下一个会话的最佳方法。我将填充一个复选框列表,并希望将最后一组选中的复选框保留到下一个会话。(这意味着为用户节省时间,因为他们可能总是选择相同的复选框子集。)

我将遍历复选框列表,并将所选值放入arraylist

在哪里可以预先列出这组数据?我考虑将对象存储到数据库中,或者可能在服务器上存储一个XML文件。我还考虑将数据推送到web.config,但希望避免重新启动应用程序

有什么意见或建议吗

短暂性脑缺血发作


J

我的方法是将复选框持久化到数据库中的布尔列中。复选框绑定到布尔列,因此当再次打开页面时,复选框包含已保存的状态。

将它们存储在cookie中如何?创建一个由布尔值组成的对象并序列化到cookie:

class Checks() {
    public value1( get; set; )
    public value2( get; set; )
    public value3( get; set; )
    ...
    public valueN( get; set; )
}

<>我对这个问题有点困惑,你提到WebSessions,甚至想在Webconfig中坚持设置,但是你会坚持多少个会话,你将如何清理未使用的会话,留下Web.CONFIG的一部分,考虑任何XML文件,基本问题。 我有

  • 设置(复选框选择)是会话级别还是应用程序级别
  • 什么是持续时间段
  • 服务器站点上的数据是否需要用于其他处理,或者如果在客户端就可以了
  • 用户是否具有唯一标识用户唯一
如果需求寻求快速解决方案,且不会增长

  • 在客户端持久化的情况下,使用Cookie,在服务器端有一个自定义对象来表示从Cookie读取的状态
  • 在服务器端持久化的情况下,使用XML文件和模式,这有助于将用户的唯一标识识别为密钥,并将设置加载到自定义类中

  • 如果需求寻求长期解决方案,并在未来增长,则使用ASP.NET配置文件并使用可用的配置文件提供程序(SQL SERVER)(如果合适)或实现您自己的配置文件提供程序。

    如果您已经在为应用程序使用数据库,我倾向于保存数据库中复选框的状态。原因是数据库已经可以处理多个访问应用程序的人的实例,并发问题更容易处理。更不用说更具可扩展性了

    我将创建一个表,其中有足够的列来捕获每个复选框的所有信息。例如:

    CREATE TABLE [CheckBoxStatus] (
    [CheckBoxID] nvarchar(50),
    [bool] bit NULL DEFAULT 0,
    [SessionID] nvarchar(50));
    
    加载页面时,您可以通过页面中的所有复选框进行交互,查询此表中的ID。如果没有记录,则表示还没有人选中该复选框。如果存在,则加载布尔选中状态并更新页面上的复选框

    如果保存,只需插入带有相应checkboxID和SessionID的布尔值即可

    如果您的checkboxID是以某种方式动态创建的,那么这也应该起作用。您只需注意生成checkboxID的内容,以确保它始终为特定类型的复选框生成相同的ID


    因此,如果是类似“红色汽车”的东西,那么每个“红色汽车”显示在相同上下文中的地方,都需要生成相同的ID。

    实际上,只有两种方法可以实现您所说的

  • 在应用程序级别有一个存储此信息的变量。缺点是,每当web应用程序回收时,它就会被清除

  • 将其存储在数据库表中。缺点是它需要一个数据库调用来获取数据

  • 允许站点写入web.config是不好的,因为这有潜在的安全风险。允许站点将任何内容写入磁盘也是如此。有时我们无法避免它(文件上传),但我们至少可以将它包含到不可执行的区域

    就个人而言,对于一个站点范围的半永久性项目,我会选择两者的组合。我将其存储在数据库表中,但将db调用的结果缓存在应用程序级变量中


    如果我的后端是sql 2005或2008,我甚至可能更进一步,使用SqlCacheDependency对象,以便在数据库表上发生更新时,缓存get立即失效。

    我忘了提到列表中的复选框数量是可变的。web.config绝对不是存储此类用户数据的地方。它用于存储web应用程序的配置详细信息。很明显,这是一个列表。为什么不把它存储在一个列表或类似的东西中呢?对不起,没有把原来的问题讲清楚。设置将在应用程序范围内进行。i、 e.任何用户都可以调用任何其他用户保存的任何设置组。(这是一个内部实用程序web应用程序)。坚持应该是永久的。将有多个设置集合。我想你的答案2正是我想要的。谢谢