面对MVC DropDownList

时间:2016-12-15 05:38:37

标签: c# asp.net asp.net-mvc

我是STACKOVERFLOW的新人......

我在选择的DDL项目中添加学生时遇到错误。

模型1: 部门

public class Department
{
    [Key]
    public int deptid { get; set; }
    public string deptname { get; set; }

    public IEnumerable<Student> Student { get; set; }
}

模型2:学生

public class Student
{
    [Key]
    public int stdid { get; set; }
    public string stdname { get; set; }
    public string stdaddress { get; set; }

    [ForeignKey("Department")]
    public int deptid { get; set; }

    public Department Department { get; set; }
}

DepartmentsController:

public class DepartmentsController : Controller
{
    // GET: Departments
    public ActionResult AddDepartment()
    {
        return View();
    }
    [HttpPost]
    public ActionResult AddDepartment(Department model)
    {
        if (ModelState.IsValid)
        {
            using (DbAccess db=new DbAccess())
            {
                db.Departments.Add(model);
                db.SaveChanges();
            }
        }
        return View(model);
    }
}

StudentsController:

public class StudentsController : Controller
{
    // GET: Students
    public ActionResult AddStudent()
    {
        DbAccess db = new DbAccess();
            SelectList datalist = new SelectList(db.Departments.ToList(), "deptid", "deptname");
            ViewBag.deptid = datalist;
            return View();


    }
    [HttpPost]
    public ActionResult AddStudent(Student model)
    {
        if (ModelState.IsValid)
        {
            using (DbAccess db = new DbAccess())
            {
                db.Students.Add(model);
                db.SaveChanges();
            }
        }
        return View(model);
    }
}

学生观看

@model MVC_Practice2.Models.Student

@{
ViewBag.Title = "AddStudent";
Layout = "~/Views/Shared/_Layout.cshtml";
SelectList datalist = ViewBag.deptid;
}
.
.
.

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

因此,当我从DDL添加所选部门的学生时,我遇到了以下错误:

  

具有键'deptid'的ViewData项的类型为'System.Int32',但必须是'IEnumerable&lt; SelectListItem&gt;'类型。

以下一行突出显示:

@Html.DropDownListFor(m=>m.deptid, datalist)

Error Screenshot

0 个答案:

没有答案