'System.Web.Mvc.SelectListItem " enthält keine Eigenschaft mit dem Namen 'id', #2
Habe ich die folgenden Entitäten:
public class Entidad
{
[Key]
public int Id { get; set; }
public string Nombre { get; set; }
public virtual ICollection<Propiedad> Propiedades { get; set; }
}
public class Propiedad
{
[Key]
public int Id { get; set; }
public virtual Entidad Entidad { get; set; }
public string Codigo { get; set; }
public string Nombre { get; set; }
public string TipoDeDatos { get; set; }
}
Und ich habe diesen controller-action
public ActionResult Create()
{
ViewBag.Entidad = new SelectList(db.Entidades);
return View();
}
und auf meine Ansicht:
<div class="form-group">
@Html.LabelFor(model => model.Entidad, new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownListFor(model => model.Entidad.Id, new SelectList(ViewBag.Entidad, "id", "nombre", 0), "Seleccionar", new { @class = "form-control" })
</div>
</div>
Jedoch bekomme ich diesen Fehler:
DataBinding: 'System.Web.Mvc.SelectListItem " enthält keine Eigenschaft mit dem Namen 'id'.
Ich habe auch versucht, mit Camel-Case-Id, aber immer noch das gleiche.
- Ich habe deine bearbeiteten Titel. Bitte sehen, "Sollten Fragen enthalten "tags" im Titel?", wo der Konsens ist ", Nein, Sie sollten nicht".
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zunächst müssen Sie ändern Sie den Namen Ihres
ViewBag
Eigenschaft, so dass Sie nicht in Konflikt mit Ihrem Modell-Eigenschaft (zu sagenEntidadList
) und dann in dieSelectList
Konstruktor legen Sie die Eigenschaften fest, die als Wert-und TextfelderDann in der Ansicht verwenden
Hinweise:
EntidadList
ist schon einSelectList
- es gibt keine Notwendigkeit zu erstelleneine neue von ihm.
SelectList
Konstruktor (dein Satzes
"0"
) ist nicht erforderlich und wird ignoriert. Die option, dieim view ausgewählt ist basierend auf dem Wert von
Entidad.Id
ViewBag.Entidad = new
wo Ihr nicht den Wert und textSelectList(db.Entidades);
Felder bedeutet die Schaffung
SelectListItems
mit einem Wert vonSystem.Web.MVC.SelectListItem>
(astring
), die nicht über eineEigenschaft mit dem Namen
id
, daher der Fehler in der Ansicht, wenn Sie versuchen,erstellen Sie eine neue
SelectList
aus esnew
sollten keine da seinspäte Antwort, sorry. Erklären ViewBag.Liste als Liste<> in den controller. verwenden Sie zum erstellen der select-Liste in der view new SelectList(Viewbag.Liste, "ID", "Eigenschaft", optional ausgewählten Wert)