MVC创建,编辑,删除动作"不能隐式转换类型"错误

时间:2015-12-02 18:19:43

标签: c# asp.net-mvc model-view-controller ef-code-first

我要为我的表创建一个删除按钮

这是我的代码

<center>
    <H2>LIST OF REGISTERED STUDENTS</H2>
    <br /><br />
</center>
<table class="table">
    <tr>
        <th>
            Name
        </th>
        <th>
           Last Name
        </th>
        <th>
            &nbsp;&nbsp;E-Mail
        </th>
        <th>
            Password
        </th>
        <th>
            Student Number
        </th>
        <th>
            &nbsp;Program
        </th>
        <th></th>
    </tr>

@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.student_name)
        </td>

        <td>
            @Html.DisplayFor(modelItem => item.student_lname)
        </td>
        <td>
             &nbsp;&nbsp;@Html.DisplayFor(modelItem => item.student_email)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.student_password)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.student_number)
        </td>
        <td>
            &nbsp;@Html.DisplayFor(modelItem => item.student_program)
        </td>
        <td>
            @Html.ActionLink("Edit", "Edit", new { id=item.student_name }) |
            @Html.ActionLink("Details", "Details", new { id=item.student_name }) |
            @Html.ActionLink("Delete", "Delete", new { id=item.student_name })
        </td>
    </tr>
}

</table>

但是当我创建删除语法时

 public ActionResult Delete(int id = 0)
        {
            CSdbConnectionString db = new CSdbConnectionString();
            student student = db.students.Find(id);
            if(student == null)
            {
                return HttpNotFound();
            }
            return View(student);
        }

        // POST: Student/Delete/5
        [HttpPost, ActionName("Delete")]
        [ValidateAntiForgeryToken]
        public ActionResult DeleteConfirmed(int id)
        {
            CSdbConnectionString db = new CSdbConnectionString();
            try
            {
                student student = db.students.Find(id);
                db.students.Remove(student);
                db.SaveChanges();
                return RedirectToAction("ViewStudents","ConsulSked");
            }
            catch
            {
                return View();
            }
        }

代码db.students.Find(id)的错误为

  

无法将CS.Models.student类型隐式转换为CS.student

这是我的学生班

  [Table("student")]
    public class student
    {
        [Key]
        [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
        public int student_id { get; set; }
        public string student_name { get; set; }

        public string student_lname { get; set; }

        public string student_email { get; set; }
        public string student_password { get; set; }

        public string student_number { get; set; }

        public string student_program { get; set; }
    }

这是我的数据上下文类

   public class CSdbConnectionString : DbContext
    {
        public CSdbConnectionString()
        : base("CSdbConnectionString")
        { }

        public DbSet<appointment> appointments { get; set; }
        public DbSet<faculty> faculties { get; set; }
        public DbSet<sched> scheds { get; set; }
        public DbSet<student> students { get; set; }
}

我该怎么办?我无法创建删除选项。

1 个答案:

答案 0 :(得分:0)

我找到了解决方案,对于将来会遇到同样错误的人。

这是因为我的项目中有一个.dbml文件,所以我可以存储我的存储过程。

  

CS.student

我的命名空间模型中的那个是

  

CS.Models.student

这就是我们需要的那个。

所以而不是

student student = db.students.Find(id);

制作

CS.Models.student student = db.students.Find(id);