Asp.net mvc 使用一个模型获取数据的多个变体

Asp.net mvc 使用一个模型获取数据的多个变体,asp.net-mvc,linq,razor,Asp.net Mvc,Linq,Razor,我有一个模型IPACS_Master_List,它是数据库中名为IPACS_Master_List的表的完整映射 这是我的控制器: public ActionResult Index() { var docs = db.IPACS_Master_List; return View(docs); } 在我看来,我正在显示整个表。在我看来,我正在尝试添加一个DropDownList,它将填充每个部门 我需要传递整个表

我有一个模型IPACS_Master_List,它是数据库中名为IPACS_Master_List的表的完整映射

这是我的控制器:

public ActionResult Index()
        {
            var docs = db.IPACS_Master_List;

            return View(docs);
        }
在我看来,我正在显示整个表。在我看来,我正在尝试添加一个
DropDownList
,它将填充每个部门

我需要传递整个表,因为这是页面的默认视图,可以看到表中的所有内容。我很难找到一个清晰的部门列表,并将其放入
下拉列表中。我尝试了很多不同的方法,但总是遇到困难。在这一点上,我将采取任何有效的方法

我也知道我对MVC、LINQ和Razor都是新手,所以非常感谢您的解释

默认视图工作正常,正确显示所有信息。但我甚至无法填充下拉列表

-----编辑#1----

这里有一种方法可以让我获得一个部门的清晰列表。不确定这是否是正确的方法,但希望能提供帮助

    var departments = db.IPACS_Master_List.Where(x => (x.department != null))
               .Select(s => new SelectListItem
                {
                    Value = s.department,
                    Text = s.department
                })
                .Distinct();

在你的模型中,我假设你有这样的东西:

public class YourModel{
 public IEnumerable<SelectListItem> Departments{get;set;}
 public string SelectedDepartment{get;set;}

}
在你的控制器里,你会有这样的东西

YourModel model=new YourModel();
model.Departments = db.IPACS_Master_List.Where(x => (x.department != null))
               .Select(s => new SelectListItem
                {
                    Value = s.department,
                    Text = s.department
                })
                .Distinct();
return View(model);

我能够让它工作,通过一个教程网站偶然发现了答案

我的控制器是:

public ActionResult Index()
        {
            var docs = db.IPACS_Master_List;

            ViewBag.Departments = db.IPACS_Master_List.Where(x => (x.department != null)).Select(s => new SelectListItem
            {
                Value = s.department,
                Text = s.department
            })
            .Distinct();

            return View(docs);
        }
我把这个添加到视图中

@Html.DropDownList("Departments", string.Empty)

您是否试图在mvc视图中只显示一个包含不同部门的下拉列表,而不显示其他数据?@NBrowne此视图当前在您首次访问时显示整个表。我想提供两个下拉框,一个填充有部门,另一个填充有过程。因此,当用户选择一个选项时,它会过滤掉数据。但现在我只专注于尝试填充下拉列表并使其可见。我没有为选择列表设置模型,我不确定如何创建包含我需要的当前模型的新模型,以及如何为选择列表项添加功能。所以我只是用viewbag绕过它。对mvc还是很陌生的。我让你知道,在mvc中,你可以很容易地将一个模型包含在另一个模型中。还要注意,在尝试将Mvc模型发布到控制器操作时,将name属性设置为string.Empty会导致问题。您会发现SelectedDepartment始终为空,这是因为model binder使用页面上元素的名称来确定值。scott gutheries的博客中提供了MVC的良好分步指南。这里还有29个视频是针对MVC 2的,但仍然适用于MVC的更新版本,我想你会发现这非常有用。有关MVC模型绑定的更多详细信息,请参阅。非常感谢您提供的所有附加信息。我很感激,努力学习这些新东西。:)
@Html.DropDownList("Departments", string.Empty)