【发布时间】:2015-11-01 07:51:47
【问题描述】:
我是第一次使用@Html.DropDownListFor。代码如下。
型号:
class Student
{
[Required]
[Display(Name = "Name")]
public string Name { get; set; }
[Required]
[Display(Name = "Roll Number")]
public string RollNumber { get; set; }
[Required]
[Display(Name = "ClassId")]
public int ClassId { get; set; }
}
class Class
{
[Required]
[Display(Name = "ClassId")]
public string RollNumber { get; set; }
[Required]
[Display(Name = "ClassName")]
public string RollNumber { get; set; }
}
控制器:
public ActionResult Create()
{
Student student = new BusinessEntities.Student();
List<Class> classes = GetAllClasses();
ViewBag.ClassId = new SelectList(classes, "ClassId", "ClassName");
return View(student);
}
[HttpPost]
public ActionResult Create(BusinessEntities.Student student)
{
if (ModelState.IsValid)
{
//Integer has 0 by default. But in our case if it contains 0,
//means no class selected by user
if(student.ClassId==0)
{
ModelState.AddModelError("ClassId", "Select Class to Enroll in");
return View(student);
}
}
}
学生创建视图:
<form method="post">
Select Class :
@Html.DropDownListFor(Model=>Model.ClassId,ViewBag.ClassId as IEnumerable<SelectListItem>, "ClassId","ClassName")
@Html.ValidationMessageFor(Model => Model.ClassId)
<input type="submit" value="Submit" />
</form>
错误信息:
具有键“ClassId”的 ViewData 项的类型为“System.Collections.Generic.List`1[[BusinessEntities.Class, BusinessEntities, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'但必须是“IEnumerable”类型。
我希望Student 中的ClassId 在发布回控制器时自动绑定和填充。请帮我摆脱它。
谢谢。
【问题讨论】:
标签: asp.net asp.net-mvc asp.net-mvc-3 razor