다음 뷰 모델이 있습니다.
public class ProjectVM
{
....
[Display(Name = "Category")]
[Required(ErrorMessage = "Please select a category")]
public int CategoryID { get; set; }
public IEnumerable<SelectListItem> CategoryList { get; set; }
....
}
다음 컨트롤러 메서드를 사용하여 새 프로젝트를 만들고 Category
public ActionResult Create()
{
ProjectVM model = new ProjectVM
{
CategoryList = new SelectList(db.Categories, "ID", "Name")
}
return View(model);
}
public ActionResult Create(ProjectVM model)
{
if (!ModelState.IsValid)
{
return View(model);
}
// Save and redirect
}
그리고보기에서
@model ProjectVM
....
@using (Html.BeginForm())
{
....
@Html.LabelFor(m => m.CategoryID)
@Html.DropDownListFor(m => m.CategoryID, Model.CategoryList, "-Please select-")
@Html.ValidationMessageFor(m => m.CategoryID)
....
<input type="submit" value="Create" />
}
보기가 올바르게 표시되지만 양식을 제출할 때 다음 오류 메시지가 표시됩니다.
InvalidOperationException : 'CategoryID'키가있는 ViewData 항목은 'System.Int32'형식이지만 'IEnumerable <SelectListItem>'형식이어야합니다.
@Html.DropDownList()
메서드를 사용하여 동일한 오류가 발생 하고 ViewBag
또는을 사용하여 SelectList를 전달하면 ViewData
.