MVC DropDownListFor和集合不是来自模型

时间:2012-01-20 12:21:27

标签: asp.net-mvc entity-framework

我有一个班级学生通过实体框架从现有数据库创建(我不是手工创建任何东西),如下所示:

public class student
{
   ...
   public int student_status { get; set; }
   ...
}

此外,我还链接了(通过导航属性)学生状态集合,如:

public class student_status
{
    public int id { get; set; }
    public string status { get; set; }
}

我使用强类型视图(System.Web.Mvc.ViewUserControl< EntityTypes.Models.Student>),我想显示带有studet状态的下拉列表并选择 - 现有。

注意:学生实体itsels不包含所有状态的集合,即列表的数据未在模型中显示 - 我认为我可以使用ViewData传递它。

我尝试使用Html.DropDownListFor(x => x.student_status,ViewData [“StudentStatuses”]作为IEnumerable,htmlAttrs)但失败了(在控制器集合中准备了ViewData [“StudentStatuses”]。

可能我可以使用Navigation Property吗?我试着理解.Include()指令,但没有运气。

我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

你的模特很好。我确实改变了我的例子中的拼写/语法。因此,如果您复制并粘贴,则需要进行调整。

这是ActionMethods:

      [HttpGet]
      public ActionResult Index()
            {
                StudentModel model = new StudentModel();
                List<StudentStatus> StatusList = new List<StudentStatus>();
                StatusList.Add(new StudentStatus { Id = 1, Name = "In School" });
                StatusList.Add(new StudentStatus { Id = 2, Name = "Out of School" });
                ViewData["StatusList"] = StatusList;
                return View(model);
            }

        [HttpPost]
        public ActionResult Index(StudentModel model)
        {
            return View();
        }

查看:

  @Html.DropDownListFor(m => m.SelectedStatus, new SelectList(ViewData["StatusList"] as System.Collections.IEnumerable, "Id", "Name", @Model.SelectedStatus), "Select Status")

型号:

public class StudentModel
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int SelectedStatus { get; set; }
}



   public class StudentStatus
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }