2011-04-17 68 views
1

我經常發現自己包括視圖模型中的選項列表,每個選項都是原始選項的視圖模型本身,並添加了Selected屬性。然後,當在一個動作中處理髮布的視圖模型時,我需要遍歷選項列表來查找選定的項目。有沒有更乾淨的方式來做這件事,或者這個星期天下午我的閒暇時間是什麼?從視圖模型中的列表中提取選定項目

+0

您能否請您展示您的代碼,因爲我不太瞭解您描述中的問題? – 2011-04-17 14:02:38

+0

即使您使用JQuery傳遞所選選項的數量,您仍然必須進行迭代..如果您有多選列表,我不認爲有辦法避免它。 – sajoshi 2011-04-18 07:22:54

回答

1

一種選擇是在視圖模型上使用選定值和相關SelectList的組合。

舉例來說,如果你有需要分配一個類別的產品,您可能有類似於這樣的視圖模型:

public class ProductViewModel 
{ 
    public int SelectedCategoryId { get; set; }   
    public IEnumerable<CategoryViewModel> AllCategories { get; set; } 
    public SelectList CategorySelectList 
    { 
     get 
     { 
      return new SelectList(this.AllCategories, "Id", "Name", this.SelectedCategoryId); 
     } 
    } 
    //Other properties 
} 

public class CategoryViewModel 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    //Other properties 
} 

並在您查看HTML輸入助手,看起來像這樣的:

@Html.DropDownListFor(mod => mod.SelectedCategoryId, Model.CategorySelectList, "---") 

因爲在ProductViewModel的CategorySelectList屬性給出SelectedCategoryId作爲了selectedValue參數,你不需要擔心手工設置了所選擇的價值 - 它會爲你做它時,它呈現下拉名單。

相關問題