gpt4 book ai didi

c# - LINQ 不同于@Html.DropDownList

转载 作者:行者123 更新时间:2023-11-30 20:58:30 25 4
gpt4 key购买 nike

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

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

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

如何用它制作下拉列表?

我试过弄乱@Html.DropDownList,但似乎无法正常工作。

我的 Controller 如下。我试图通过 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);
}

最佳答案

不要使用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);
}

然后让您的 View 使用模型 MyModel

然后你可以这样做:

@Html.DropDownListFor(m => m.Department, Model.Departments)

关于c# - LINQ 不同于@Html.DropDownList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16070786/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com