1
我經常發現自己包括視圖模型中的選項列表,每個選項都是原始選項的視圖模型本身,並添加了Selected
屬性。然後,當在一個動作中處理髮布的視圖模型時,我需要遍歷選項列表來查找選定的項目。有沒有更乾淨的方式來做這件事,或者這個星期天下午我的閒暇時間是什麼?從視圖模型中的列表中提取選定項目
我經常發現自己包括視圖模型中的選項列表,每個選項都是原始選項的視圖模型本身,並添加了Selected
屬性。然後,當在一個動作中處理髮布的視圖模型時,我需要遍歷選項列表來查找選定的項目。有沒有更乾淨的方式來做這件事,或者這個星期天下午我的閒暇時間是什麼?從視圖模型中的列表中提取選定項目
一種選擇是在視圖模型上使用選定值和相關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參數,你不需要擔心手工設置了所選擇的價值 - 它會爲你做它時,它呈現下拉名單。
您能否請您展示您的代碼,因爲我不太瞭解您描述中的問題? – 2011-04-17 14:02:38
即使您使用JQuery傳遞所選選項的數量,您仍然必須進行迭代..如果您有多選列表,我不認爲有辦法避免它。 – sajoshi 2011-04-18 07:22:54