2012-05-30 142 views
0

我有一堆表。每個表都有一個「狀態」列。該列有字符A或I. A =有效,I =無效。將自定義列表/字典綁定到MVC視圖中的下拉列表

我有一個對應於每個表的創建視圖。我想顯示一個顯示兩個值的下拉框 - 「活動」和「非活動」,然後相應地映射它們。

我知道我能做到在每個視圖下,我需要狀態

@Html.DropDownListFor(model => model.status, new SelectList(new[] { new { ID = "A", Desc = "Active" }, new { ID = "I", Desc = "Inactive" } }, "ID", "Desc")) 

下拉但是如果明天我決定要增加一個狀態,我將不得不改變每一個視圖。

另一種選擇是創建一個字典,並使之通過排序的this article

然而由於解釋視圖模型,這意味着我必須爲每一個我的模型的視圖模型只是以適應statuslist。

有沒有其他辦法可以實現這個目標?

回答

1

我建議對每個獨特視圖使用視圖模型。從長遠來看,它使得用戶界面更易於使用和維護。

視圖模型方法可以採取極端的做法,並在我的經驗中產生反作用。例如,爲客戶實體創建虛擬機時,我不會重新創建具有客戶實體的所有相同屬性的CustomerVM。相反,我只是在CustomerVM上創建一個持有整個客戶實體的Customer Property。有些人可能會不同意這種方法,因爲如果視圖不顯示所有客戶實體信息,我可能會向視圖展示比視圖更多的信息。確實如此,但我喜歡快速且易於實施和維護的解決方案。

你永遠不知道未來會有什麼必要。隨着時間的推移,我發現這種方法是最靈活的解決方案。

因此,您可以爲所有視圖創建基本視圖模型,這些視圖具有共同的查找列表,並讓您的新視圖模型從此基本VM繼承。

這是一種方法。 :)