0
私のMVC5アプリケーションでは、データが入ったテーブルがあります。テーブルの上には、単純なドロップダウンリストがあり、データのフィルタとして(int)branchIdでフィルタリングするために使用されています。ここで データテーブルのフィルタとしてドロップダウンリスト(intベースの項目値付き)を使用した場合のエラー
ViewBag.Branch = db.Branches
.ToList()
.Select(rr => new SelectListItem { Value = rr.Id.ToString(), Text = rr.BranchName })
.ToList();
は、ドロップダウンリストだ私はviewbag経由branchIdのドロップダウンリストを埋めるよ
... ....私のPOSTメソッドで
@Html.DropDownList("branchId",
(IEnumerable<SelectListItem>)ViewBag.Branch,
"-- All Branches --")
私はデータをフィルタリングしようとしています....
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult GetEventsByUser(int? branchId)
{
:
IQueryable<Event> events;
events = db.Events;
:
if (branchId != null)
{
events = events
.Include(a => a.Branch)
.Where(b => Equals(b.Branch.Id, branchId));
}
else
{
events = events
.Include(a => a.Branch);
}
:
:
return View("Index", events.ToList());
最終行でエラーが発生します。エラーは次のとおりです。
Unable to cast the type 'System.Int32' to type 'System.Object'.
LINQ to Entities only supports casting EDM primitive or enumeration types.
このintベースのフィールドのフィルタとしてどのようにドロップダウンを使用できますか?
「あなたが(b => b.Branch.Id == branchId)」を試しましたか? – user1845593
@ user1845593それはそれでした!どのように私はあなたに信用を与えることができますかありがとう! :) – WebDevGuy2
これは問題ありません。レコードを保存するだけのソリューションを投稿できます。ほとんどの人はコメントを無視します。将来の投稿のためのちょっとした提案。たとえば、エラーの名前のような暗黙的な名前を付けてください。あなたに固有ではないものがあります。 – user1845593