【发布时间】:2015-03-02 07:48:11
【问题描述】:
我面临的问题是,当我提交此表单时,我的下拉列表的值没有像其他文本框的值一样传递给控制器。
我有课:
public class NewCourseClassModel
{
public Cours CourseModel { get; set; }
public CourseDescription CourseDescriptionModel { get; set; }
public CoursesDetail CoursesDetailModel { get; set; }
}
我有一个控制器:
[Authorize]
public ActionResult ExistingCourseClass()
{
var model = new NewCourseClassModel() { };
ViewBag.Course_ID = new SelectList(db.Courses, "Course_ID", "Course_Name");
ViewBag.Course_Name = new SelectList(db.Courses, "Course_Name", "Course_Name");
return View(model);
}
在我的视图页面上:
<div class="editor-field form">
@Html.DropDownList("Course_Name", "Select...")
@Html.ValidationMessageFor(model => model.CourseModel.Course_Name)
</div>
【问题讨论】:
-
您没有绑定到模型属性。使用
@Html.DropDownListFor(m => m.CourseModel.Course_Name, (SelectList)ViewBag.Course_Name, "Select...") -
您对
Html.ValidationMessageFor()的使用表明您希望选择名称为“CourseModel.Course_Name”,而您只将“Course_Name”传递给Html.DropDownListFor()。这会导致模型绑定器无法找到Course_Name,从而在模型中将其留空。尝试@Html.DropDownList("CourseModel.Course_Name", "Select..."),或使用适当的 lambda 表达式。
标签: c# asp.net-mvc razor html.dropdownlistfor