C# 在Asp.net中使用ViewBag填充下拉列表

C# 在Asp.net中使用ViewBag填充下拉列表,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,我创建了一个名为managesaller的视图,它有两个子视图AddOrEdit,其中包含一个表单。在这里,我想在数据库中的Vendor表的下拉列表中填充Vendor companys列表,以便在下面的代码中查看它们 ViewBag.Vendor = new SelectList(db.Vendors, "Id", "name"); 并按以下代码行在AddOrEdit中创建下拉列表 @Html.DropDownListFor(model => model.CompanyId, new

我创建了一个名为managesaller的视图,它有两个子视图AddOrEdit,其中包含一个表单。在这里,我想在数据库中的Vendor表的下拉列表中填充Vendor companys列表,以便在下面的代码中查看它们

ViewBag.Vendor = new SelectList(db.Vendors, "Id", "name");
并按以下代码行在AddOrEdit中创建下拉列表

 @Html.DropDownListFor(model => model.CompanyId, new SelectList(ViewBag.Vendor, "Id", "name"), "Select Vendor Company", new { @class = "form-control" })

但是当我运行它时,它会显示:Argument null exception“附加信息:Value不能为null”。请告诉我我做错了什么。

使用下面的代码创建下拉控件

@Html.DropDownListFor(model => model.CompanyId, (SelectList)ViewBag.Vendor, "Select Vendor Company", new { @class = "form-control" })

请参阅问题中的详细信息。

我没有在控制器中列出所选供应商的列表。正确的方法如下

List<Vendor> VendorList = db.Vendors.ToList();
ViewBag.Vendor = new SelectList(VendorList, "Id", "name");
List VendorList=db.Vendors.ToList();
ViewBag.Vendor=新选择列表(VendorList,“Id”,“name”);

现在我得到了{“具有'CompanyId'键的ViewData项的类型为'System.Int32',但必须为'IEnumerable'。“}而我认为它是在IEnumerable中。@HacanChamp,关于这个错误,请参阅我在POST操作结果中添加了“ViewBag.Vendor=new SelectList(db.Vendors,“Id”,“name”);”,但仍然得到相同的错误。