【问题标题】:Dropdown list value not being passed with the model to controller after submitting a form提交表单后,下拉列表值未与模型一起传递给控制器
【发布时间】: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 =&gt; 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


【解决方案1】:

使用@html.DropdownListFor,如下所示:

@Html.DropDownListFor(m => m.CourseModel.Course_Name, (SelectList)ViewBag.Course_Name, "Select...")

【讨论】:

    【解决方案2】:

    代替

    @Html.DropDownList("Course_Name", "Select...")
    

    使用@Html.DropDownListFor() 并将下拉列表与模型属性绑定,如下所示。

    @Html.DropDownListFor(model => model.CourseModel.Course_Name, ViewBag.Course_Name as SelectList, "Select...")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-24
      • 1970-01-01
      相关资源
      最近更新 更多