2012-07-13 127 views
0

我有一個包含約3個項目的表格。我希望使用該表填充Dropdown List。但我有一個條件,我想只顯示下拉列表中的2個項目。如何做呢?使用數據庫表項目填充下拉列表

+0

條件是什麼?哪兩項你想展示?頂2? – Shyju 2012-07-13 16:44:00

+0

不是頂部2.我必須對同一個表使用多個下拉菜單,但在某些視圖中,所有表項都不是必需的。 – nebula 2012-07-13 16:51:07

+0

檢查Darin的答案。您可能需要更改Where子句以根據您的條件獲取2個項目 – Shyju 2012-07-13 16:53:00

回答

0

你可以使用一個視圖模型:

public class MyViewModel 
{ 
    public string SelectedItemId { get; set; } 
    public IEnumerable<SelectListItem> Items { get; set; } 
} 

再取前2項(很明顯,如果你的要求是基於一定條件下采取一些其他2項你可以連鎖企業,在.Where()擴展方法爲了調用.Take()前先過濾):

public ActionResult Index() 
{ 
    var model = new MyViewModel(); 
    model.Items = db.Items.Take(2).ToList().Select(x => new SelectListItem 
    { 
     Value = x.Id, 
     Text = x.SomeText 
    }); 
    return View(model); 
} 

的看法是標準的東西,只需打電話到DropDownListFor幫手:

@model MyViewModel 
@Html.DropDownListFor(x => x.SelectedItemId, Model.Items) 
+0

我遇到了問題。該視圖與另一個模型強烈類型。我現在怎麼做? – nebula 2012-07-13 17:02:26

+0

然後,您只需將已顯示的兩個屬性('SelectedItemId'和'Items')添加到您的視圖模型中。現在如果你告訴我這個視圖模型是你無法修改的,因爲它是一個自動生成的EF類,我告訴你,將域模型傳遞給你的視圖是非常糟糕的做法,你應該使用視圖模型。因此,在這種情況下,您可以定義一個包裝視圖模型,除了我在答案中顯示的兩個屬性外,還可以將您的域模型封裝爲一個屬性。 – 2012-07-13 17:24:03

相關問題