没有类型为'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方法中找到相应的对象?

没有类型为'IEnumerable<SelectListItem>'密钥为auteur_du_livre

我终于得到了什么是错误的在我的模型:我认为绑定与SelectList可以直接获得Auteur类型的对象,当用户提交表单,但它是错误的
绑定只能获得一个原始变量(这里它将获得int类型的属性Id),该变量通过selectlist对表单的值进行断言。谢谢大家。因此,我刚刚以以下方式更改了视图中的helper:

@Html.DropDownListFor(model => model.Auteur_du_livre.Id, (SelectList)ViewBag.auteur_possible)