簡體   English   中英

在asp.net頁上保存和調用選定復選框的最佳實踐

[英]Best practice for saving and recalling selected checkboxes on an asp.net page

我正在尋找關於從一個Web會話到下一個Web會話保持一系列價值的最佳方法的想法。 我將填充一個“復選框”列表,並希望將最后一組選定的復選框保留到下一個會話。 (這是為用戶節省時間,因為他們很可能總是選擇相同的復選框子集。)

我將遍歷復選框列表,並將選定的值放入arraylist。

保留這組數據的好地方在哪里? 我查看了將對象存儲到數據庫或服務器上的XML文件。 我也考慮過將數據推送到web.config,但希望避免應用程序重新啟動。

有什么意見或建議嗎?

TIA

Ĵ

我這樣做的方法是將復選框持久保存到數據庫的布爾列中。 復選框綁定到boolean列,因此當再次打開頁面時,復選框包含已保存的狀態。

如何將它們存儲在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文件,我有的基本問題

  • 是設置(復選框選擇)@會話級別還是應用程序級別?
  • 持續時間是多少?
  • 是服務器站點上進行其他處理所需的數據,還是在客戶端,就可以了。
  • 用戶是否具有唯一的標識用戶?

如果要求尋求快速解決方案並且不會增長,

  1. 如果是客戶端持久性,請使用Cookie,在服務器端,有一個自定義對象代表從Cookie讀取的狀態
  2. 在服務器端持久性的情況下,請使用XML文件和架構,該文件和架構可幫助將用戶的唯一標識標識為Key,並將設置加載到Custom類中。

如果需求尋求長期解決方案並且將來會不斷增長,則使用ASP.NET配置文件,並在合適時使用可用的配置文件提供程序(SQL SERVER)或實施自己的配置文件提供程序。

如果您已經在為應用程序使用數據庫,則傾向於將復選框的狀態保存在數據庫中。 原因是因為數據庫已經准備好處理訪問應用程序的人員的多個實例,並且並發問題更易於處理。 更不用說更具可擴展性了。

我將創建一個表,該表具有足夠的列以捕獲有關每個復選框的所有信息。 例如:

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

在頁面加載時,您可以遍歷頁面中的所有復選框,並在表中查詢其ID。 如果沒有記錄,則表示還沒有人選中該復選框。 如果存在,則加載布爾檢查狀態並更新頁面上的復選框。

保存時也是如此,只需插入具有相應的checkboxID和SessionID的布爾值即可。

如果您的checkboxID是以某種方式動態創建的,那么這也應該起作用。 您只需要注意無論生成您的checkboxID的是什么,以確保它總是為特定種類的復選框生成相同的ID。

因此,如果它類似於“ Red Car”,那么在同一上下文中顯示“ Red Car”的每個地方,都需要生成相同的ID。

實際上,只有兩種方法可以完成您所談論的事情。

  1. 在應用程序級別具有一個存儲此信息的變量。 缺點是,只要Web應用程序回收,它就會被清除。

  2. 將其存儲在數據庫表中。 缺點是它需要數據庫調用才能獲取數據。

允許站點寫入web.config是不好的,因為這有潛在的安全風險。 允許站點將任何內容寫入磁盤也是如此。 有時我們無法避免(文件上傳),但是我們至少可以將其包含在不可執行的區域中。

就個人而言,對於站點范圍內的半永久性物品,我將兩者結合起來使用。 我將其存儲在數據庫表中,但將db調用的結果緩存在應用程序級變量中。

如果我的后端是sql 2005或2008,我什至可以更進一步,並使用SqlCacheDependency對象,以便該數據庫表上發生更新時使緩存失效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM