2

好的,我在我认为应该很容易的事情上遇到了很多麻烦。我正在尝试使用表中的不同值填充下拉列表。

此 linq 提供了每个下拉选项所需的部门列表。

IPACS_Master_Lists
   .Where (x => (x.Department != null))
   .Select (s => s.Department)
   .Distinct ()
   .Select (v => v)

我如何用这个做一个下拉列表?

我试过弄乱@Html.DropDownList 但似乎无法得到任何工作。

我的控制器如下。我试图用 ViewBag 传递它,但也无法让它工作。

public ActionResult Index()
        {
            var docs = db.IPACS_Master_List;
            ViewBag.Departments = new SelectList(db.IPACS_Master_List.Where(x => (x.department != null)).Select (s => s.department).Distinct().Select (v => v), "id", "department", 0);
            return View(docs);
        }
4

2 回答 2

3

千万不要用ViewBag,每次用,小猫就死了。

说真的,这是非常糟糕的做法。

首先,假设在您的模型中:

public class MyModel
{
   public List<Documents> Docs { get; set; } //don't know what type this is
   public List<SelectListItem> Departments { get; set; }
   public string Department { get; set; } //this holds what you select in the view
}

然后将您的操作更改为:

public ActionResult Index()
{
    MyModel model = new MyModel();
    model.Docs = db.IPACS_Master_List;
    model.Departments = db.IPACS_Master_List
       .Where(x => x.department != null)
       .Select(s => s.department)
       .Distinct()
       .Select(s => new SelectListItem
           {
               Text = s.Name,
               Value = s.Name
           })
       .ToList();

        return View(model);
}

然后让您的视图使用模型MyModel

然后你可以这样做:

@Html.DropDownListFor(m => m.Department, Model.Departments)
于 2013-04-17T21:53:05.747 回答
1

将您的收藏变成收藏<SelectListItem>

var myResult = IPACS_Master_Lists.Where (x => (x.Department != null))
   .Select (s => s.Department)
   .Distinct ()
   .Select (v => new SelectListItem{
    Value = v.ResultIdField,
    Text = v.ResultNameField
    })

然后将其链接到实际的下拉列表:

如果您通过 ViewModel 传递:

@Html.DropDownListFor(model=>model.SelectedResultId, @Model.myResult ,"- Select One")

如果您通过 ViewBag 传递您的收藏(我会远离这个):

@Html.DropDownListFor(model=>model.SelectedResultId, @ViewBag.myResult ,"- Select One")

如果视图中根本没有 ViewModel,您可以选择另一种选择:

@Html.DropDownList("selectListName", ViewBag.myResult, new {id = "selectListId"})

另请查看我大约一年前在这里提出的问题。它应该可以帮助您: 无法让我的 DropDownListFor 在下拉菜单中选择选定的 SelectListItem 项

于 2013-04-17T21:47:49.137 回答