Я использую @Html.DropDownListFor
в первый раз. Код ниже.@ Html.DropDownListДля того, чтобы не отправлять обратно контроллеру
Модель:
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>
Сообщение об ошибке:
ViewData элемент, который имеет ключ 'Classid' имеет тип «System.Collections.Generic.List`1 [[BusinessEntities.Class, BusinessEntities, Version = 1.0.0.0, Culture = нейтральный, PublicKeyToken = null]] ', но должен иметь тип «IEnumerable».
Я хочу ClassId
из Student
быть переплетены и заполняется автоматически при вывешены назад к контроллеру. Пожалуйста, помогите мне избавиться от него. Спасибо.
Какова ваша модель? –