2010-11-01 123 views
3

我正在處理一個.net mvc web應用程序,它在主頁上有一堆Web部件。我意識到webpart是一個.net形式的術語,但不知道要命名這些迷你部分。所以無論如何,現在這些部分在頁面呈現時被調用,但最終我會插入JQuery並使用AJAX調用這些部分。當用戶在主頁和後面之間導航時,這些迷你部分或小部件將需要保持狀態。使用.net格式,頁面狀態信息保存在視圖狀態,但使用.net mvc,這是不可用(謝天謝地)。ASP.NET MVC狀態管理

那麼,有沒有一個框架已經爲這樣的MVC功能創建?如果不是,處理這種情況的最佳方法是什麼?我正在考慮利用HttpContext對象並將所有內容存儲在那裏,但不確定該對象是否有任何大小限制。

+0

他們被稱爲「局部視圖」。 – 2010-11-01 14:49:52

+1

我會盡量避免在MVC中管理「狀態」,看看ASP.NET窗體(ViewState)的用途是什麼。 – dotariel 2010-11-01 14:51:08

回答

0

您可以使用輸出緩存或數據緩存,它們都受到MVC 1.0/2.0的支持。

+0

我不想緩存數據,但試圖存儲每個局部視圖的狀態。例如,如果用戶最小化其中一個小部件,我希望應用程序記住下次該用戶僅導航到該會話的主頁。我認爲緩存對於這種情況並不明智。 – Skadoosh 2010-11-01 15:12:06

+0

查看http://blog.stevensanderson.com/2008/10/15/partial-output-caching-in-aspnet-mvc/ 或 http://www.c-sharpcorner.com/UploadFile/ dhananjaycoder/outputcachinginmvcapplication02222009222109PM/outputcachinginmvcapplication.aspx – john 2010-11-01 15:24:43

2

就像在MVC中的其他任何東西一樣,你將需要在某處存儲狀態。正如其他用戶指出的那樣,使用局部視圖可以減少設計的複雜性,因爲您可以讓控制器只處理這些小部件。然後他們可以負責保存/恢復/跟蹤該部分的狀態或信息。 (這可能是使用數據庫,在進程內存中,無論如何)。

如果您將控件放在母版頁中,您可以從其他邏輯中刪除部件的實現,因此您不必擔心捕獲並將與這些部分相關的數據與您模型的其餘部分一起用於您的視圖。

如果將部件分開,就可以更容易地對它們進行AJAX化,因爲即使它們在同一時間渲染,它們已經獨立於視圖數據運行。