EntityFramework和MVC视图(显示)

时间:2011-05-18 18:38:53

标签: asp.net-mvc entity-framework views

我有一个名为Projects的主表。该项目上有外键,部门ID为DeptId,站点ID为SiteId。当View显示时,我想从Department表中显示部门的名称,并从Site表中显示Site的名称,但是当数据保存回Project表时,我想将他们的ID保存回来Project表作为外键。 因此,我想显示Department表中的名称和View中的Site表,但是当View中的数据保存回数据库时,我想将它们的相关ID保存到Project表中。我应该如何使用EF进行此操作?处理一个表很容易,但我不清楚如何渲染一个字段用于显示并将另一个字段(ID)保存到主项目数据库。感谢

---- UPDATE ------

我找到了一个我需要做的例子,但是你能告诉我这个下拉列表是如何填充的。下拉列表中的第一个参数是否与coltroller中的ViewBag匹配?

- 从视图 -

 


            @Html.DropDownList("DepartmentID", String.Empty)
            @Html.ValidationMessageFor(model => model.DepartmentID)

- FROM CONTROLLER -

 


[HttpPost]
        public ActionResult Create(Course course)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    unitOfWork.CourseRepository.Insert(course);
                    unitOfWork.Save();
                    return RedirectToAction("Index");
                }
            }
            catch (DataException)
            {
                //Log the error (add a variable name after DataException)
                ModelState.AddModelError("", "Unable to save changes. Try again, and if the problem persists, see your system administrator.");
            }
            PopulateDepartmentsDropDownList(course.DepartmentID);
            return View(course);

    private void PopulateDepartmentsDropDownList(object selectedDepartment = null)
            {
                var departmentsQuery = unitOfWork.DepartmentRepository.Get(
                    orderBy: q => q.OrderBy(d => d.Name));
                ViewBag.DepartmentID = new SelectList(departmentsQuery, "DepartmentID", "Name", selectedDepartment);
            }