MVCで。RazorでLambdaのSelectList値を表示できません。
RazorにdropDownListを表示しようとすると、このエラーメッセージが表示されます。
DataBinding: 'System.Int32'に 'BranchId'という名前のプロパティが含まれていません。ウォッチウィンドウで
私は1つのレコードが、私はモデルクラスのSelectList
への参照を持っていないBranchId
とBranchName
を含むデータベースから返されている見ることができています。 Create.cshtml
@Html.DropDownList("Branch", new SelectList(ViewBag.Branch, "BranchID", "BranchName"), htmlAttributes: new { @class = "form-control" })
で
Controllerクラスで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);
あなたが今 提案されているようスティーブン
おかげで私は私のCompanyBranchesControllerでラムダ式を変更 var list = db.Branchs.Where(ブランチ=>!db.C ompanyBranches .Any(d => d.BranchId == branches.BranchId)) .Select(b => new {BranchId = b.BranchId、BranchName = b.BranchName})ToList();ドロップダウンリストのため
Create.cshtmlがHtml.DropDownList @ ある( "分岐"、IEnumerableをとしてViewBag.Branch、htmlAttributes:新しい{@class = "フォームコントロール"})
結果でドロップダウンリストが {BranchId = 5、BranchNumber = Br0003}
あるI)が(=新しいリストCompanyBranchController リストアイテムに追加するなど、それを果たしています。 foreach(リスト内のvar i) { SelectListItem s = new SelectListItem(); s.Text = i.BranchName.ToString(); s.Value = i.BranchId.ToString(); items.Add(s);
異なる剃刀の表現を試みるが、成功しない。
私は間違っていますか?あなたのコードのこの部分で
感謝 – Paul