2008-12-15 77 views
8

我正在開發一個MVC網站,這是我公司的第一個工作,我發現自己做了很多事情之一是在控制器中創建選擇列表,將它們放入viewdata並閱讀他們在創建html.DropDownList時。這是一些讓我感到如此臭的方式。在asp.net中選擇列表的用法mvc

  1. 一些網頁可以重複的事情列表(旅館房間wheer用戶可以根據自己需要儘可能多的房間添加到酒店的食宿費用),目前我使用相同的選擇列表的,這是很好的做法或他們每個人都應該有嗎?

  2. 與前面的示例「房間」是由renderpartial或ajax通過jquery調用呈現的ascx。控制器傳遞選擇列表以便ascx可以使用它的最好方法是什麼,目前我添加到頁面的viewdata中,它將viewdata傳遞給renderpartial,但是在ajax調用上action方法也需要添加ascx的Viewdata選擇列表,不知道這是最好的方法。

  3. 我有一個存儲庫,它擁有這個「靜態」數據並作爲通用列表返回,因此每次控制器需要數據時它會觸發列表的存儲庫(這裏有一些不僅僅是板速率,像人,mr,mrs等等的標題)我懷疑某種緩存會更好,因爲數據很少發生變化。

有沒有人在這些方面有任何建議?

回答

3
  1. 如果這些SelectLists是完全相等的,那麼我確定最好爲多個DropDownLists使用一個列表。

  2. 看起來像它的常見用法。我也使用類似的方法,但考慮將一些控件移植到Html.RenderAction,因爲通過頁面的ViewData進行控制對我來說也不好。是的,我知道它不會是純粹的MVC :)

  3. 如果你的ORM支持緩存,當然使用它。

而且如果你的項目是不小,你認爲它會繼續增長,我建議實現上面的資料庫服務層(POEAA模式),將包含業務邏輯和高速緩存管理邏輯了。

如果你想透明地管理你的緩存,而不影響你的dal或mvc層,我認爲最好的方法是使用AOP。

+0

好的。它很小且不可變,我如何輕鬆緩存? – Shimmy 2012-11-15 17:23:41

0

這樣做的一種方法是通過鍵入的視圖將所需的數據放入模型中。該視圖可以迭代模型中的數據以生成它需要的任何選擇列表。你也可以將一個對象直接填充到ViewData集合中,但我認爲擁有一個類型化的視圖會產生更簡潔的代碼。

相關問題