In MVC.Kann SelectList-Werte von Lambda in Razor nicht anzeigen
Ich bekomme diese Fehlermeldung beim Versuch, eine DropDownList in Razor anzuzeigen.
DataBinding: 'System.Int32' enthält keine Eigenschaft mit dem Namen 'BranchId'.
Im Ãœberwachungsfenster ich in der Lage bin 1 Datensatz zu sehen, wird von der Datenbank zurückgegeben ein BranchId
und BranchName
Ich habe keinen Hinweis auf die SelectList
in der Modellklasse enthält.
In der Controller-Klasse
var list = new SelectList(db.Branchs.Where(branches => !db.CompanyBranches
.Any(d => d.BranchId == branches.BranchId))
.Select(branches => branches.BranchId).ToList(),
"BranchId", "BranchNumber");
ViewBag.Branch = new SelectList(list);
Im Create.cshtml
@Html.DropDownList("Branch", new SelectList(ViewBag.Branch, "BranchID", "BranchName"), htmlAttributes: new { @class = "form-control" })
Dank Stephen
ich den Lambda-Ausdruck in meinem CompanyBranchesController geändert, wie Sie vorgeschlagen ist es jetzt var list = db.Branchs.Where (Zweige =>! Db.C ompanyBranches .Any (d => d.BranchId == branches.BranchId)) .Wählen Sie (b => new {BranchId = b.BranchId, BranchName = b.BranchName}). ToList();
Die Create.cshtml für das Dropdown ist @ Html.DropDownList ("Verzweigung", wie ViewBag.Branch IEnumerable, Htmlattributes: new {@class = "form-control"})
das Ergebnis in der Dropdownlist ist {BranchId = 5, BranchNumber = Br0003}
ich habe mit ihm spielen, einschließlich Ergänzung der CompanyBranchController Listenelemente = new List(); foreach (var i in Liste) { SelectListItem s = neu SelectListItem(); am Text = i.BranchName.ToString(); s.Value = i.BranchId.ToString(); Artikel.Add (s);
}
Sowie verschiedene Rasierer Ausdrücke, aber ohne Erfolg zu versuchen.
Irgendeine Idee, wo ich falsch liege?
Vielen Dank für Ihre Antwort Stephen – Paul