MVC 4添加错误
本文关键字:错误 添加 MVC | 更新日期: 2023-09-27 18:24:28
我犯这个错误已经一天多了,似乎真的无法修复。我知道网上有很多关于这个主题的问题,我已经读了一遍又一遍,仍然没有解决这个问题。我只是在学习MVC 4,所以我非常困惑。我收到错误消息:
具有键"cabinCrewId"的ViewData项的类型为"System.Int32",但必须为"IEnumerable"类型。
如有任何帮助或指导,我们将不胜感激!
我的控制器:
public ActionResult AddCrew()
{
FlightCabinCrew fcc = new FlightCabinCrew();
return View(fcc);
}
行动后:
[HttpPost]
public ActionResult AddCrew(FlightCabinCrew fcc)
{
if (ModelState.IsValid)
{
using (A1Context db = new A1Context())
{
var data = from person in db.person
from flightcrew in db.flightcabincrew
from cabincrew in db.cabincrew
where flightcrew.cabinCrewId == cabincrew.person
where cabincrew.person == person.id
select person.name;
ViewBag.list = new SelectList(data.ToList(), "id", "name");
db.flightcabincrew.Add(fcc);
db.SaveChanges();
return RedirectToAction("Index");
}
}
else
{
using (A1Context db = new A1Context())
{
var data = from person in db.person
from flightcrew in db.flightcabincrew
from cabincrew in db.cabincrew
where flightcrew.cabinCrewId == cabincrew.person
where cabincrew.person == person.id
select person.name;
ViewBag.list = new SelectList(data.ToList(), "name", "name");
return View(fcc);
}
}
}
}
我的观点:
<div class="editor-label">
@Html.LabelFor(model => model.cabinCrewId)
</div>
<div class="editor-field">
@Html.DropDownListFor(model => model.cabinCrewId, (SelectList)ViewBag.list)
@Html.ValidationMessageFor(model => model.cabinCrewId)
</div>
感谢
我知道我需要在GET AddCrew方法中将SelectList分配给ViewBag(就像我在POST方法中所做的那样)。但我确实知道GET方法是什么,以及我在其中放了什么。
根据要求,这里是个人类
[Table("person")]
public class Person
{
[Key, Column(Order = 1)]
public int id { get; set; }
public string name { get; set; }
}
答案是说你有两个控制器。一个处理http get
请求的。。。
public ActionResult AddCrew(){...}
和另一个处理CCD_ 2请求的。。。
[HttpPost]
public ActionResult AddCrew(FlightCabinCrew fcc){...}
那么您将为两种控制器方法呈现相同的视图。您正在渲染的视图需要一个ViewBag
对象,以便能够在下拉列表中显示项目。。。在这里
@Html.DropDownListFor(model => model.cabinCrewId, (SelectList)ViewBag.list)
您正在处理post请求的controllers操作方法中成功设置ViewBag
对象。。。
ViewBag.list = new SelectList(data.ToList(), "id", "name");
但是您也需要在处理get请求的控制器操作方法中执行同样的操作。。。答案就是这么说的。GET控制器操作方法是您原始问题