2008-09-25 24 views
1

在我們的CMS,我們有一個地方,我們使用戶能夠玩弄自己的站點層次結構 - 四處移動頁面,添加和刪除頁面等我如何在ASP.NET中保存用戶離開頁面時頁面中的信息?

我們使用拖放&下降到大約實現移動頁面。

每次移動都必須保存在數據庫中,並導出到許多HTML文件。如果我們每一步都這樣做,就會減慢用戶的速度。因此,我們認爲最好讓用戶儘可能多地播放它們,將每個更改保存到數據庫中,但只有當它們離開頁面時 - 才能將其更改導出到HTML文件。

當用戶準備好提交修改時,我們想讓用戶點擊一個「發佈」按鈕,但是我們擔心用戶不會記得這麼做,因爲從他們的立場來看,一個頁面到一個新的地方 - 行動完成了。該按鈕的另一個問題是它與站點其他部分的行爲不一致(例如,當用戶在頁面內移動文本時,更改會自動保存,因爲只有1個HTML文件需要更新)

那麼我們如何在離開頁面時自動保存用戶更改?

回答

3

您應該在用戶離開頁面時警告用戶。

http://www.siafoo.net/article/67

現代瀏覽器有一個名爲window.beforeunload的事件觸發權當任何事件發生,將導致頁面卸載。這包括點擊鏈接,提交表格或關閉標籤或窗口。

訪問此頁面的樣本工程在大多數瀏覽器:

http://www.webreference.com/dhtml/diner/beforeunload/bunload4.html

我認爲這是不好的做法,保存頁面,而不要求用戶第一,那是正常的網頁,不會是如何工作的。

樣品:

<SCRIPT LANGUAGE="JavaScript1.2" TYPE="text/javascript"> 
<!-- 
function unloadMess(){ 
    mess = "Wait! You haven't finished." 
    return mess; 
} 

function setBunload(on){ 
    window.onbeforeunload = (on) ? unloadMess : null; 
} 

setBunload(true); 
//--> 
</SCRIPT> 
+0

我瞭解您對此的評論,而不是網頁的工作方式。然而,這是一個web應用程序,如果你做了某些事情(例如移動,添加或刪除),你希望保存更改而不必再次點擊 – 2008-09-25 12:07:30

1

我能想到的最簡單的方法是將每個用戶身邊使用Ajax(例如,使用一個UpdatePanel,onUpdated活動項目移動時間保存的頁面信息,讓它火一些腳本更新用戶頁面配置

或者 - 。NET的的WebParts實現由程序員自動執行此無需干預(除非你想改變存儲引擎,它在默認情況下使用本地MDB在

1

使用「。發佈「che」 ckbox/button,並且當用戶以導致他們離開的方式與頁面交互時,詢問他們是否想要發佈,如果該框未被選中/按鈕未被點擊。請注意,您可能不需要或不能提示用戶的操作(關閉瀏覽器,訪問他們的收藏夾菜單等)。

1

我會強迫他們點擊一個按鈕,如發佈。這是一個'培訓'問題。

他們離開時自動保存更改可能會有其他後果。例如,如果用戶打開一個記錄並隨身攜帶並且無意改變它,他們會關閉它,就像word文檔,excel等一樣。 。我會讓你的網站模仿這種模式。

您還必須記住,Web是一個斷開連接的環境,並不要求所有Web應用程序都像Windows應用程序一樣運行。

如果用戶沒有點擊發布/保存按鈕,那麼更改不會被保存,這是他們要記住要做的。

相關問題