我一直在阅读StackOverflow,但是没有人真正能够帮助我。我工作的有来自其他几个车型领域SelectLists位置的模式,但每一次我尝试和节省时间,我得到的错误:没有类型为'IEnumerable <SelectListItem>'的ViewData项目,其中包含关键字'CompanyID'
“的‘System.InvalidOperationException’类型的异常出现在系统.Web.Mvc.dll但在用户代码中没有处理
附加信息:有型“的IEnumerable”具有关键“CompanyID”没有ViewData的项目”
下面是从我的观点的相关代码:
查看/位置/ Create.cshtml
<div class="form-group">
<label class="control-label col-md-2">Company</label>
<div class="col-md-10">
@Html.DropDownList("CompanyID", (SelectList)ViewBag.AllCompanies, new { @class = "form-control" })
</div>
</div>
下面是从我的控制器相关代码:
控制器/ PositionController。 cs
// GET: /Position/Create
public ActionResult Create()
{
//create query to find all committees
var query = from m in db.Majors
orderby m.Major
select m;
//execute query and store in list
List<Majors> allMajors = query.ToList();
//convert list to select list format needed for HTML
SelectList allMajorsList = new SelectList(allMajors, "MajorID", "Major");
ViewBag.AllMajors = allMajorsList;
//create query to find all committees
var query2 = from c in db.Companies
orderby c.CompanyName
select c;
//execute query and store in list
List<Company> allCompanies = query2.ToList();
//convert list to select list format needed for HTML
SelectList allCompaniesList = new SelectList(allCompanies, "CompanyID", "CompanyName");
ViewBag.AllCompanies = allCompaniesList;
//create query to find all committees
var query3 = from i in db.Industries
orderby i.IndustryName
select i;
//execute query and store in list
List<Industry> allIndustries = query3.ToList();
//convert list to select list format needed for HTML
SelectList allIndustriesList = new SelectList(allIndustries, "IndustryID", "IndustryName");
ViewBag.AllIndustries = allIndustriesList;
return View();
}
// POST: /Position/Create
// To protect from overposting attacks, please enable the specific properties you want to bind to, for
// more details see http://go.microsoft.com/fwlink/?LinkId=317598.
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include="PositionID,PositionTitle,PositionType,PositionLocation,PositionDeadline,PositionDescription")] Position position, int[] SelectedMajors, Int32 CompanyID, Int32 IndustryID)
{
//find selected committee
Company SelectedCompany = db.Companies.Find(CompanyID);
Industry SelectedIndustry = db.Industries.Find(IndustryID);
//associate committee with event
position.PositionCompany = SelectedCompany;
position.PositionIndustry = SelectedIndustry;
if (ModelState.IsValid)
{
//if there are majors to add, add them
if (SelectedMajors != null)
{
foreach (int MajorId in SelectedMajors)
{
Majors majorToAdd = db.Majors.Find(MajorId);
position.ApplicableMajors.Add(majorToAdd);
}
}
db.Positions.Add(position);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(position);
}
我似乎无法弄清楚我做错了什么。任何帮助将不胜感激!
将'ViewBag.AllCompanies'的名称更改为'ViewBag.CompanyID' – DCruz22
@ DCruz22刚试过 - 得到相同的错误或:/ –
为什么不使用强类型视图? – DCruz22