在asp.net页面上保存和调用所选复选框的最佳实践

时间:2009-07-16 20:06:50

标签: c# asp.net configuration

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

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

哪里有一个预先处理这组数据的好地方?我查看了将对象存储到数据库或可能是服务器上的XML文件。我还考虑过将数据推送到web.config,但是想避免重启应用程序。

有任何意见或建议吗?

TIA

Ĵ

5 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

  • 设置(复选框选择)@会话级别还是应用程序级别?
  • 持续时间是多少?
  • 服务器网站上是否需要这些数据用于其他处理,或者如果它在客户端则没问题。
  • 用户是否具有唯一身份用户?

如果要求寻求快速解决方案并且不会增长,

  1. 如果客户端持久性使用Cookie,则在Sever端有一个自定义对象来表示从Cookie中读取的状态
  2. 如果是服务器端持久性,请使用XML文件和架构,以帮助识别用户作为密钥的唯一标识,并在Custom类中加载设置。
  3. 如果要求寻求长期解决方案并且将来会增长,那么使用ASP.NET配置文件并使用可用的配置文件提供程序(SQL SERVER)(如果适用)或实现您自己的配置文件提供程序。

答案 3 :(得分:0)

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

我会创建一个包含足够列的表来捕获有关每个复选框的所有信息。例如:

CREATE TABLE [CheckBoxStatus] (
[CheckBoxID] nvarchar(50),
[bool] bit NULL DEFAULT 0,
[SessionID] nvarchar(50));

在加载页面时,您可以浏览页面中的所有复选框,查询此表中的ID。如果没有记录,则表示尚未选择该复选框。如果有,则加载布尔检查状态并更新页面上的复选框。

如果保存也一样,只需插入带有相应checkboxID和SessionID的布尔值。

如果您的checkboxID以某种方式动态创建,这也应该有效。您只需要小心生成您的checkboxID,以确保它始终为特定类型的复选框生成相同的ID。

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

答案 4 :(得分:0)

实际上只有两种方法可以解决你所说的问题。

  1. 在应用程序级别有一个存储此信息的变量。缺点是,只要网络应用程序回收,它就会被清除。

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

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

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

    如果我的后端是sql 2005或2008,我甚至可以更进一步使用SqlCacheDependency对象,以便在该db表上发生更新时缓存get无效。