Проблема с внешним ключом в MVC? - PullRequest
0 голосов
/ 05 октября 2019

Когда я запускаю этот код, получаю сообщение об ошибке

Нет элемента ViewData типа 'IEnumerable<SelectListItem>', который имеет ключ 'CourseId'

Model

Student.cs

[Key]
public int Id { get; set; }

public string Name { get; set; }
public int CourseId { get; set; }  
public Course course { get; set; }

Course.cs

public class Course
{ 
    [Key]
    public int CourseId { get; set; }

    public string CourseName { get; set; }
}

StudentController.cs

        public ActionResult Create()
        {
            List<SelectListItem> CourseId = new List<SelectListItem>();
            CourseId.Add(new SelectListItem { Text = "1", Value = "1" });
            CourseId.Add(new SelectListItem { Text = "2", Value = "2" });
            CourseId.Add(new SelectListItem { Text = "3", Value = "3" });
            ViewBag.CourseId = CourseId;
            return View();
        }

        [HttpPost]
        public ActionResult Create(Student stud)
        {
            ViewBag.CourseId = stud.CourseId;
            return View();
        }

create.cshtml

<div class="form-group">
                @Html.LabelFor(model => model.CourseId, "CourseId", htmlAttributes: new { @class = "control-label col-md-2" })
                <div class="col-md-10">
                    @Html.DropDownListFor(model=>model.CourseId,new SelectList(ViewBag.CourseId))
                    @Html.ValidationMessageFor(model => model.CourseId, "", new { @class = "text-danger" })
                </div>
            </div>

Изображение:

введите описание изображения здесь

Я все еще сталкиваюсь с этой ошибкой? помогите Сначала я запустил Student Controller, это неправильно или нет?

1 Ответ

2 голосов
/ 05 октября 2019

Вам необходимо указать Идентификатор курса как SelectListItem в вашем методе действия get. Попробуйте это

public ActionResult Create()
{ 
  List<SelectListItem> CourseId = new List<SelectListItem>();
  CourseId.Add(new SelectListItem { Text = "1", Value = "1" });
  CourseId.Add(new SelectListItem { Text = "2", Value = "2" });
  CourseId.Add(new SelectListItem { Text = "3", Value = "3" });
  ViewBag.CourseId = CourseId;
  return View();
}

[HttpPost]
public ActionResult Create(Student stud)
{
  ViewBag.CourseId = stud.CourseId;
  return View();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...