我正在使用ASP.NET MVC 4,我正在尝试从我的数据库填充下拉列表:
我的模特:
public class AppointmentViewModel
{
public string DisplayDate { get; set; }
public DateTime BirthDate { get; set; }
public MedecinViewModel Medecin { get; set; }
public SuggestionViewModel Suggestion { get; set; }
}
public class MedecinViewModel
{
public int MedecinId { get; set; }
public String MedecinNom { get; set; }
}
我的下拉列表:
<div class="editor-field">
@Html.DropDownListFor(a => a.Medecin.MedecinId, (SelectList)ViewBag.Medecins, "Choisissez un médecin")
</div>
我的控制器:
ViewBag.Medecins = new SelectList(context.DBMedecins, "MedecinId", "FullName");
似乎在执行后期操作之后出现问题,我收到以下错误消息:
具有键'Medecin.MedecinId'的ViewData项的类型为'System.Int32',但必须是'IEnumerable'类型?
这有什么问题?
编辑:我的GET和POST控制器
[HttpGet]
public ActionResult ConfirmAppointment(string interval)
{
context = new SchedulingDataClassesDataContext();
ViewBag.Medecins = new SelectList(context.DBMedecins, "MedecinId", "FullName");
return View();
}
[HttpPost]
public ActionResult ConfirmAppointment(AppointmentViewModel avm)
{
context = new SchedulingDataClassesDataContext();
if (ModelState.IsValid)
{
//logical code
}
return View(avm);
}
答案 0 :(得分:2)
您需要在帖子操作中的SelectList
中再次填充ViewBag
,因为在发布后操作后,它会再次呈现视图,但在帖子操作中未设置Viewbag.Medecins
,因此它变为null { {1}}范围仅从操作到查看,之后再次变为空:
ViewBag