2013-02-06 51 views
0

我有3個部分的應用程序:MVC 3.加載菜單和內容分開

  • 主菜單;
  • 上下文菜單 - 與主菜單中的選定項相關;
  • 和Page body - 與上下文菜單中的選定項相關;

「主菜單」和「上下文菜單」是基於會員。我不想每次加載我的頁面時加載它們,因爲那會消耗資源數據庫。所以,我使用ajax只加載主菜單一次,並且當一個項目被選中時,我加載該項目的上下文菜單。

我的問題是:每個表單的帖子都會清除我的菜單。

問:我可以使用Ajax構建我的整個應用程序?我不想那麼做,因爲它太簡單了,在表單中發佈一篇文章,然後用ajax將所有數據發送給控制器。

到現在爲止,我有兩個選擇:

  1. 加載我用Ajax和頁面正文用IFRAME菜單,所以這篇文章的不會再次渲染我的菜單。
  2. 做一切使用ajax;

有沒有其他的方法來加載我的菜單與Ajax和能夠使用窗體的職位?

對不起,如果我不夠清楚。

回答

0

您不必使用Ajax構建所有應用程序。但在這種情況下,Ajax可能是最好的前進方向。

以下是我的建議

  1. 對於一個開發中
  2. 已加類中的每個輸入控制器創建數據錄入(說「的DataEntry」)
  3. 創建一個JavaScript函數來迭代開發並構建所有具有類數據的元素的列表。條目
  4. 使用列表構建json對象。作爲屬性名稱和值的屬性值的每個元素的名稱
  5. 使用jQuery AJAX發佈此控制器動作
  6. [可選]您可以使用.done和.fail方法採取的成功或失敗的行動的電話

我知道這可能看起來很嚇人,但是如果你有很多數據輸入表單,你可以重新使用這段代碼。

1

這給了我一個暫停的句子是這樣的:「我不希望每次加載它們我的頁面加載,因爲這會消耗資源數據庫」。

你看,我已經建立了相當多的應用程序,基於用戶角色的顯示菜單和子菜單(你所謂的會員)。從資源或數據庫的角度來看,這從來都不是問題。

,你需要你可以訪問所有的會員信息一次,當用於被記錄在你的。在最簡單的情況下,用戶的身份將與他們的角色一起存儲在上下文(HttpContext.User中)所以你根本不需要數據庫查詢就可以獲得每個請求的這些信息。請注意,在這種情況下,也不需要ajax。

如果無論出於何種原因,您無法在此類上下文中存儲您的成員資格信息,您仍可以存儲在會話中(如內存中)或加密的Cookie中。

現在,我明白了,我沒有詳細描述您的情況,可能在您的情況下,您正在嘗試做的事情是有保證的,但是我建議您再次考慮,因爲在正常情況下你所指出的是一個問題(數據庫資源)應該不是問題。

底線是:如果您更改您的應用程序以存儲用戶登錄時的成員資格信息,則不會出現問題。