使用一个模型来获取多种数据变体

时间:2013-04-18 15:36:23

标签: asp.net-mvc linq razor

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

这是我的控制器:

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

            return View(docs);
        }

在我看来,我正在显示整个表格。在我看来,我正在尝试添加一个DropDownList,其中将填充每个部门。

我需要传递整个表,因为这是能够查看表中所有内容的页面的默认视图。我试图抓住一个独特的部门列表并把它扔进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();

2 个答案:

答案 0 :(得分:2)

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

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

}

在你的视图中应该有这样的东西来渲染

@Html.DropDownListFor(model => model.SelectedDepartment, new SelectList(@Model.Departments, "key", "value", Model.SelectedDepartment))  

在您的控制器中,您将拥有类似的内容

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);

答案 1 :(得分:0)

我能够通过教程网站偶然找到答案。

我的控制器是:

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)