【发布时间】:2017-02-06 21:08:47
【问题描述】:
我知道这类错误有很多问题,我尝试对我的问题实施这些修复,但似乎没有任何效果。
我相信 ASP.Net 教程中 EnrollmentController 类中的 Create() 方法的限制会给出此错误消息。我有一个限制,如果学生之前已经注册过一门课程,他/她不能再次注册。当我尝试测试限制时,它给了我 ViewData 错误消息。
public ActionResult Create([Bind(Include = "EnrollmentID,CourseID,StudentID")]Enrollment enrollcourse)
{
if (ModelState.IsValid)
{
var result = db.Enrollments.Count(u => u.StudentID == enrollcourse.StudentID && u.CourseID == enrollcourse.CourseID) == 0;
if (result)
{
TempData["success"] = "Course Enrolled";
db.Enrollments.Add(enrollcourse);
db.SaveChanges();
return RedirectToAction("Index");
}
else
{
TempData["Already"] = "Student Has Already Enrolled This Course";
ViewBag.StudentId = new SelectList(db.People, "ID", "FullName", enrollcourse.StudentID);
ViewBag.CourseId = new SelectList(db.Courses, "CourseId", "Title", enrollcourse.CourseID);
return View("Create");
}
}
return View(enrollcourse);
}
错误消息告诉我在我的 Views/Enrollment/Create.cshtml
中修复这行代码@Html.DropDownList("StudentID", null, htmlAttributes: new { @class = "form-control" })
我是 .Net 和 C# 的新手,我正在尽我最大的努力通过,但它变得非常混乱和复杂。 “没有 'IEnumerable... 类型的 ViewData 项”是什么意思?
【问题讨论】:
-
因为您没有
StudentID的密钥,所以您有StudentId的密钥。使用@Html.DropDownList("StudentId",... -
我尝试更改它,但同样类型的错误。
-
ModelState 键不区分大小写:StudentID == StudentId == StUdEnTiD。没关系。
-
因为
ModelState无效并且您在return View(enrollcourse);之前没有填充ViewBag.StudentId
标签: c# asp.net-mvc