【发布时间】:2013-02-12 10:55:45
【问题描述】:
嗨,我一直坚持解决这个问题。我看过很多例子,但我找不到我要找的东西。任何帮助表示赞赏。
我使用 Code-First 方法。
我已启用迁移,并且数据库正常 [Student] - [StudentCourse] - [Course]。
场景:我有两个实体 -> 学生
public class Student { public int Id { get; set; } public string Name { get; set; } public virtual List<Course> Courses { get; set; } }
课程
public class Course { public int Id { get; set; } public string Name { get; set; } public string Description { get; set; } public virtual List<Student> Students { get; set; } }
没什么特别的...我已经创建了一个 ViewModel ->
public class StudentCourseViewModel { public int Id { get; set; } public string Name { get; set; } public List<Course> Courses { get; set; } }
查看:
@model Project.Web.Models.StudentCourseViewModel @{ ViewBag.Title = "编辑"; }
编辑
@using (Html.BeginForm()) { @Html.ValidationSummary(true)
<fieldset> <legend>Student</legend> @Html.HiddenFor(model => model.Id) <div class="editor-label"> @Html.LabelFor(model => model.Name) </div> <div class="editor-field"> @Html.EditorFor(model => model.Name) @Html.ValidationMessageFor(model => model.Name) </div> <div class="editor-label"> @Html.LabelFor(model => model.Courses) </div> <div class="editor-field"> @for (int i = 0; i < Model.Students.Count(); i++) { <div style="border: dotted 1px; padding: 5px; margin: 10px;"> @Html.HiddenFor(s => s.Students[i].Id) @Html.LabelFor(s => s.Students[i].Name[i + 1]) @Html.EditorFor(s => s.Students[i].Name) </div> } </div> <p> <input type="submit" value="Save" /> </p> </fieldset> }
控制器动作:
[HttpPost] public ActionResult Edit(CourseStudentViewModel model) { var course = db.Courses.Find(model.CourseId); course.Name = model.CourseName; course.Description = model.CourseDescription; course.Students = model.Students; if (ModelState.IsValid) { db.Entry(course).State = System.Data.EntityState.Modified; db.SaveChanges(); return RedirectToAction("Index"); } return View(model); }
(也许这是我错了……)
无论如何,我想创建一个包含许多可选课程的新学生(文本框 -> courseName)
我该怎么做?
主要问题是我总是从我的视图 [httpPost]Create -action 得到空值(学生很好,课程列表 = NULL)。
我需要指导如何使这种方法成为可能。
谢谢你!
【问题讨论】:
-
课程是否存在于您的实体中,只是不在 ViewModel 中?显示将实体模型转换为视图模型的代码。
-
能否请您发布您的查看代码?
-
@IronMan84 我已将视图添加到帖子中
-
@KevinJunghans 我已经添加了控制器编辑操作。
-
能否请您发布您的创建操作?
标签: entity-framework asp.net-mvc-4