2015-09-14 30 views
2

我們有MVC應用程序。我們有一個要求,如果用戶更改頁面上的任何數據,並試圖離開頁面而不保存,那麼我們需要顯示一些「你確定嗎?」一種消息。如何識別模型在提交給服務器之前已更改?

這裏面臨的挑戰是如何識別數據發生變化?我們的典型設計模式如下

public class MyController:Controller 
{ 
    public ActionResult Index() 
    { 
     var model = LoadModelFromDB(); 
     return View(model); 
    } 
} 

然後我們綁定模型來查看使用Html輔助擴展方法。
在客戶端如何在將數據提交給服務器之前識別模型是否髒?

+0

您需要安裝javascript。一種選擇是將每個控件的defaultValue屬性(checkbox的defaultChecked)與'value'屬性進行比較 –

回答

0

這是一個完全在客戶端上發生的操作 - 它與MVC中的模型無關。

您可以使用JavaScript將事件處理程序附加到onbeforeunload event,並提供一些額外的邏輯來測試表單元素以進行更改。

我對一個開源項目做出了貢獻,它可以幫助解決瀏覽器之間的差異,並監視更改的表單元素,允許插入不同的對話框框架,並將其封裝到一個漂亮的jQuery插件中命名爲Dirty Forms

+0

如果我在準備好的文檔上序列化表單並將值存儲在變量&中,然後在導航離開之前再次序列化它,並比較這兩個序列化的值,將工作? – LP13

+0

我還沒有嘗試過,但它可能會工作。儘管如此,如果你在頁面上有AJAX動態改變表單屬性,我很懷疑有些東西可能會出錯。 – NightOwl888

+0

你們,我必須semilize和每次DOM存儲更改存儲 – LP13

相關問題