2012-07-13 126 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

相关问题