ASP.NET MVC 3.0新增功能。請求專家對下面提到的方案的看法。ASP.NET MVC 3.0 - 維護模型狀態
我有一個客戶詳細信息頁面,其中只有名稱是可編輯的。還有10個其他客戶屬性不可編輯,並使用SPAN顯示。當用戶提交頁面時,我只需要更新名稱。
如果使用EF,我將不得不再次加載客戶,覆蓋名稱,然後保存。否則,我將不得不在某個地方維護客戶模型。
任何人嘗試使用會話ID緩存模型(或viewmodel)?這是一個好習慣嗎?
ASP.NET MVC 3.0新增功能。請求專家對下面提到的方案的看法。ASP.NET MVC 3.0 - 維護模型狀態
我有一個客戶詳細信息頁面,其中只有名稱是可編輯的。還有10個其他客戶屬性不可編輯,並使用SPAN顯示。當用戶提交頁面時,我只需要更新名稱。
如果使用EF,我將不得不再次加載客戶,覆蓋名稱,然後保存。否則,我將不得不在某個地方維護客戶模型。
任何人嘗試使用會話ID緩存模型(或viewmodel)?這是一個好習慣嗎?
你幾乎在正確的方向思考。
如果使用EF,我將不得不再次加載客戶,覆蓋名稱然後保存。否則,我將不得不在某個地方維護客戶模型。
在更新方法**恢復客戶一次僅在需要時再保存
**有2個原因
而不是使用會話,我會建議使用隱藏字段備案LastUpdateDateTime和用戶ID將在模型調回檢索記錄,並與數據庫記錄驗證LastUpdatedtime
通常,您應該使用不同於數據庫模型的視圖模型。話雖如此,在您目前的情況下,情況非常簡單,只需向控制器提交名稱,然後使用提交的名稱設置您從EF獲得的對象的Name屬性。
緩存視圖模型或模型不是你關心的問題。數據庫模型緩存由EF處理,您的問題主要是缺乏明確的應用程序分層。事實上,我強烈建議學習更多關於MVC模式,基本應用程序體系結構(2-3層)以及何時以及如何使用OR \ M(EF是)的信息。
採用隱藏式輸入,用於其他屬性在你的形式。通過這種方式,您可以獲得綁定到EF實體的所有屬性,並且不需要從數據庫再次獲取實體。或者您可以序列化實體(如果您使用POCO實體)並設置爲隱藏輸入。當你回發你應該反序列化實體。
我的選擇永遠是第一位的。 :)
我不確定你到底在問什麼。 – 2012-02-13 11:51:33
讓我試着更具描述性:我有一個客戶詳細信息視圖,顯示一個客戶記錄,只有名稱可編輯。還有其他客戶詳細信息,例如電子郵件,電話等,這些信息是不可編輯的,並使用跨度顯示。當用戶編輯名稱並提交頁面時,模型會嘗試更新數據庫中客戶的詳細信息。 – user1206686 2012-02-13 12:14:25