发布数据时填充的SelectListItem出错

时间:2014-06-16 08:46:54

标签: c# asp.net-mvc asp.net-mvc-4 selectlist

我正在使用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);
    }

1 个答案:

答案 0 :(得分:2)

您需要在帖子操作中的SelectList中再次填充ViewBag,因为在发布后操作后,它会再次呈现视图,但在帖子操作中未设置Viewbag.Medecins,因此它变为null { {1}}范围仅从操作到查看,之后再次变为空:

ViewBag