2016-07-21 45 views
0

這裏是我的模型如何根據病情做出SelectListItem選擇真或假的

public class NewsViewModel 
    { 
     public NewsViewModel() 
     { 

      this.Categories = new List<Category>(); 

     } 
     public int NewsId { get; set; } 
     [Required(ErrorMessage = "Please enter News Title")] 
     public string NewsTitle { get; set; } 
     public IEnumerable<Category> Categories { get; set; } 


    } 

我需要設置選擇。如果在NewsViewModel.Categories集合存在ID爲True

private IEnumerable<SelectListItem> GetCategories() 
{ 

    return db.Categories .Select(s=>new SelectListItem { 
     Value=s.Id.ToString(), 
     Text=s.Name, 
     Selected = model.Categories.Select(x => x.CategoryId).Contains(s.CategoryId); 

} 

而且in View:

@Html.ListBoxFor(s => s.SelectedCategoriesIds, @Model.AllCategories, new { id = "DropDownList2", multiple = "multiple", @class = "form-control" }) 
+0

在第二個代碼片段FYI中,您有一個沒有右括號的開放括號。 –

+0

另外,你現在擁有什麼問題?你有錯誤嗎?它只是沒有回報你想要的? –

+0

@ChrisH。我收到錯誤 附加信息:無法創建類型爲'Assignment.Category'的常量值。只有原始類型或枚舉類型在此上下文中受支持。 – Lucy

回答

2

請參閱this question;您不能使用Contains與非原始類型(在這種情況下,如Category)。寫你的查詢不同的方式解決此限制的工作將是:

return db.Categories.Select(s=>new SelectListItem { 
    Value=s.Id.ToString(), 
    Text=s.Name, 
    Selected = model.Categories.Exists(z => z.CategoryId == s.CategoryId); 
} 

而是從model.Categories選擇CategoryId秒,然後檢查是否s.CategoryId在該列表中,我們可以檢查,看看是否有Exists()項目model.Categories其中CategoryIds.CategoryId相同。