开发者

There is no ViewData item of type 'IEnumerable<SelectListItem>' that has the key 'Carrera'

I'm having trouble when handling the Post request for my controller:

[HttpGet]
public ActionResult Crear()
{
    CarreraRepository carreraRepository = new CarreraRepository();
    var carreras = carreraRepository.FindAll().OrderBy(x => x.Nombre);
    var carrerasList = new SelectLi开发者_如何学Pythonst(carreras, "ID", "Nombre");
    ViewData["Carreras"] = carrerasList;

    Materia materia = new Materia();
    return View(materia);        
}

[HttpPost]
public ActionResult Crear(Materia materia, FormCollection values)
{
    if (ModelState.IsValid)
    {
        repo.Add(materia);
        repo.Save();

        return RedirectToAction("Index");
    }
    return View(materia);
}

When the HttpGet action runs, the form to create renders fine. The values are set correctly on the DropDownList and everything is peachy; when I try to submit the form (run the HttpPost action) I receive the error.

Can anyone help me out?

Is it because the HttpPost doesn't have a ViewData declared? Thanks for the help.


Since you are Posting on the same View, when you post to Creat the ViewData["Carreras"] is not created. You have to load the data of your carreras again in your Post.

[HttpPost]
public ActionResult Crear(Materia materia, FormCollection values)
{
    CarreraRepository carreraRepository = new CarreraRepository();
    var carreras = carreraRepository.FindAll().OrderBy(x => x.Nombre);
    var carrerasList = new SelectList(carreras, "ID", "Nombre");
    ViewData["Carreras"] = carrerasList;

    if (ModelState.IsValid)
    {
        repo.Add(materia);
        repo.Save();

        return RedirectToAction("Index");
    }
    return View(materia);
}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜