EntityFramework и MVC Views (Показать) - PullRequest
1 голос
/ 18 мая 2011

У меня есть главная таблица под названием Проекты.Этот проект имеет внешние ключи с именем DeptId для идентификатора отдела, SiteId для идентификатора сайта.Когда отображается представление, я хочу показать название отдела из таблицы Department и имя сайта из таблицы Site, но когда данные сохраняются обратно в таблицу Project, я хочу сохранить их идентификаторы обратно вТаблица проекта как внешний ключ.Итак, я хочу отобразить имена из таблицы Department и из таблицы Site в представлении, но я хочу сохранить связанные с ними идентификаторы в таблице Project, когда данные в представлении будут сохранены обратно в базу данных.Как мне сделать это с EF?С одной таблицей легко работать, но я не совсем понимаю, как отобразить одно поле для отображения и сохранить другое поле (ID) в основной базе данных проекта.Спасибо

---- ОБНОВЛЕНИЕ ------

Я нашел пример того, что мне нужно сделать, но не могли бы вы рассказать, как заполняется этот выпадающий список?,Первый параметр в раскрывающемся списке соответствует ViewBag в контроллере?

- FROM VIEW -



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



1 Ответ

0 голосов
/ 19 мая 2011
...