gpt4 book ai didi

c# - 没有具有键 'IEnumerable' 的 'Carrera' 类型的 ViewData 项

转载 作者:太空狗 更新时间:2023-10-29 22:11:23 25 4
gpt4 key购买 nike

我在处理 Controller 的 Post 请求时遇到了问题:

[HttpGet]
public ActionResult Crear()
{
CarreraRepository carreraRepository = new CarreraRepository();
var carreras = carreraRepository.FindAll().OrderBy(x => x.Nombre);
var carrerasList = new SelectList(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);
}

当 HttpGet 操作运行时,要创建的表单呈现良好。 DropDownList 上的值设置正确,一切都很好;当我尝试提交表单(运行 HttpPost 操作)时收到错误。

谁能帮帮我?

是因为 HttpPost 没有声明 ViewData 吗?感谢您的帮助。

最佳答案

由于您在同一个 View 上发布,当您发布到 Creat 时,不会创建 ViewData["Carreras"]。您必须在您的帖子中再次加载您的 carreras 数据。

[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);
}

关于c# - 没有具有键 'IEnumerable<SelectListItem>' 的 'Carrera' 类型的 ViewData 项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3648271/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com