没有类型为'IEnumerable'密钥为auteur_du_livre
本文关键字:密钥 auteur du livre IEnumerable 类型 SelectListItem | 更新日期: 2023-09-27 18:14:39
(我的第一个主题->太棒了!)实际上我正在学习如何处理ASP。. NET MVC和我有一些问题与Html Helper DropDownListFor.
所以相关的类是这样的:
public class Auteur {
[required]
public int Id {get; set;}
public string Nom {get; set;}
}
我的控制器是这样的:
[HttpGet]
public ActionResult Ajout_livre()
{
Donnee_a_persister data = new Donnee_a_persister();
List<Auteur> auteur_possible = new List<Auteur>();
foreach (Auteur temp in data.afficher_auteurs())
auteur_possible.Add(temp);
ViewBag.auteur_possible = new SelectList(auteur_possible,"Id","Nom");
return View();
}
我在我的视图中这样使用它:
<div>
@Html.LabelFor(model => model.Auteur_du_livre)
@Html.DropDownListFor(model => model.Auteur_du_livre, (SelectList)ViewBag.auteur_possible)
@Html.ValidationMessageFor(model => model.Auteur_du_livre)
</div>
这是我的post-method(你可以看到我也尝试在这里填充选择列表)
[HttpPost]
public ActionResult Ajout_livre(Livre detaillivreaajouter)
{
Donnee_a_persister data = new Donnee_a_persister();
List<Auteur> auteur_possible = new List<Auteur>();
foreach (Auteur temp in data.afficher_auteurs())
auteur_possible.Add(temp);
ViewBag.auteur_possible = new SelectList(auteur_possible, "Id", "Nom");
if (ModelState.IsValid == false)
{
return View(detaillivreaajouter);
}
//Work out
return View("Livre_eligible", detaillivreaajouter);
}
Auteur_du_livre reffers
到类型为Auteur
的变量,因为该视图是强类型的。所以我得到了视图,我的下拉列表中填充了ViewBag
的内容,但是当我提交表单时,我得到了以下错误
没有'IEnumerable'类型的ViewData项具有键"Auteur_du_Livre"
我发现这个问题很常见,所以我尝试了很多方法,但我还是不知道到底发生了什么
是否可以直接从表单中获得整个对象(由于绑定),或者我必须获得属性Id并在我的post方法中找到相应的对象?
我终于得到了什么是错误的在我的模型:我认为绑定与SelectList可以直接获得Auteur类型的对象,当用户提交表单,但它是错误的。
绑定只能获得一个原始变量(这里它将获得int类型的属性Id),该变量通过selectlist对表单的值进行断言。谢谢大家。因此,我刚刚以以下方式更改了视图中的helper:
@Html.DropDownListFor(model => model.Auteur_du_livre.Id, (SelectList)ViewBag.auteur_possible)