2012-04-07 55 views
1

我正在使用ASP.NET MVC 3.ASP.NET MVC 3 - 檢測多個頁面上的多個複選框是否髒

我有很長的項目列表,我想將它們顯示給用戶每個項目旁邊的複選框代表項目是打開還是關閉。由於項目很多,因此使用分頁顯示項目。

加載頁面後,如果項目處於打開狀態,則會檢查複選框。用戶可以瀏覽項目,選中/取消選中複選框。

我只想在項目狀態發生變化時啓用提交按鈕。當用戶瀏覽列表並進行更改時,檢測項目列表是否處於骯髒狀態的最佳方法是什麼?

+0

http://www.knockoutjs.com – danludwig 2012-04-07 16:12:22

+0

@danludwig - 淘汰賽只會幫助解決問題的一部分 – 2012-04-07 16:21:38

+0

@MystereMan您可能是對的,我在查看有關分頁的部分時進行了修改。但是,如果分頁是在客戶端而不是服務器(ajax)上完成的,那麼您不能僅僅使用observables來計算複選框是否髒/提交按鈕應該被啓用? – danludwig 2012-04-07 16:47:02

回答

1

如何做到這一點是不同的,這取決於你是否在爲頁面刷新滾動或ajax。

如果您只是使用新的頁面信息重新加載頁面,那麼您需要某種狀態來跟蹤以前選擇的項目。這可以在會話或臨時表中完成。臨時表可以在會話重置後存活,並且可以在服務器場方案中使用。

無論如何,無論您的頁面發佈在複選框點擊,還是您在下一頁發佈(無論哪種情況下,您都希望執行post-redirect-get pattern)。當頁面刷新時,您需要返回集合是否髒的指示,並啓用提交按鈕。

請注意,用戶可以在中途選擇時走開,並在半小時後返回或返回。如果他們的登錄仍然有效,並且您使用了會話,則會話可能已被回收。

如果你在做Ajax,那麼你需要保留一個正在運行的更改列表,以便如果用戶稍後取消選擇它們,則可以再次禁用提交按鈕。你可以將這個列表保存在一個隱藏的字段中,並且每個複選框都會發送到ajax,因爲它發生在一個臨時表中,或者你可以保持隱藏的運行總數,並在調用提交時應用更改。您的隱藏字段可能會包含您已更改(選中或未選中)的ID列表。當該字段爲空時,禁用該按鈕,如果不是,則啓用它。

+0

感謝您的回覆。你有很多優點。我會看到他們是如何爲我工作的。 – tranmq 2012-04-09 17:14:06