我有一个班级学生通过实体框架从现有数据库创建(我不是手工创建任何东西),如下所示:
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()指令,但没有运气。
我怎么能这样做?
答案 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; }
}