2011-10-04 104 views
0

我正在構建管理控制檯,所有控制器都依賴於客戶的下拉選擇。MVC3全局謂詞過濾器

我想將此客戶選擇移至佈局並將其保留在所有控制器中,以便您無需在任何地方選擇它。

要做到這一點,最好的方法是什麼?

在此先感謝。

回答

0
  1. 將下拉列表移至_layout.cshtml。
  2. 創建一個BaseView,所有視圖將繼承併爲其提供一個屬性,以存儲Customer & Current Customer。
  3. 創建一個BaseController方法,該方法將填充BaseView實例。
  4. 將當前選定的客戶存儲在會話中。
  5. 創建一個全局過濾器並讓它檢查所有視圖以查看它們是否繼承BaseView。如果他們這樣做,可以將它們轉換爲BaseView,然後填寫屬性。
  6. 在_layout中寫一些代碼,可以使用View來填充下拉列表。我在這裏有點模糊,因爲當我們做類似的事情時,我的同事實際上做了這個部分。
  7. 當用戶更改下拉值時,您可以使用JSON調用將更新會話中當前客戶的操作方法。
+0

謝謝。我將在明天實施這個計劃,看看我能否實現這一目標。 – TheGwa

0

我會考慮寫HTML幫手。你認爲所有的鳥都可以飛,但有一天你會說有另一種特殊的情況,你不再需要這個下拉框。或者將其包含在局部視圖中,並在需要的地方渲染該視圖 - 這只是一行額外的代碼。

例如

@section main_content{ 

    @{ Html.RenderPartial("MyPartialViewContainingDropDownBox"); } 

} 
+0

感謝您的回答,但是這不需要在每個操作中綁定下拉值? – TheGwa

+0

我需要時將SelectList包含在viewbag中。 – 2011-10-05 08:35:41