当我运行代码时,它给出了InvalidOperationException:键'Id‘的ViewData项是'System.Int32’类型,但必须是'IEnumerable‘类型。错误我该怎么做?
//Controller
public IActionResult Create()
{
//ViewBag.Dersler = new SelectList(_db.Dersler.ToList(), "PKfromDersler", "DersName");
List<SelectListItem>values=(from Ders in _db.Dersler.ToList()
select new SelectListItem
{
Text=Ders.DersName,
Value=Ders.Id.ToString()
}).ToList();
ViewBag.v1 = values;
return View();
}
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult Create(Ogretmen obj)
{
if (ModelState.IsValid)
{
_db.Ogretmenler.Add(obj);
_db.SaveChanges();
return RedirectToAction("Index");
}
return View(obj);
}
//view
<div class="mb-3">
<h6 >Ders Seçiniz</h6>
@Html.DropDownListFor(Ders=>Ders.Id,(IEnumerable<SelectListItem>)ViewBag.v1)
</div>发布于 2022-09-08 02:36:01
你可以试试
@Html.DropDownListFor(Ders=>Ders.Id,new SelectList(ViewBag.v1,"Value","Text"))
这是我的测试结果。
public IActionResult Index()
{
var value = new List<UserModel>
{
new UserModel{ id = 1, name = "user1" },
new UserModel{ id = 3, name = "user3" }
};
ViewBag.v1 = value;
return View();
}

发布于 2022-09-08 20:43:42
正如我注意到的,您没有将模型传递给View
贝娄的步骤如下:
首先通过创建table
selectlist
从Dersler
ViewBag获取列表,然后将第一步生成的列表传递给视图。
Html.DropDownListFor使用ViewBag作为selectlist创建下拉列表。
public IActionResult Create()
{
//ViewBag.Dersler = new SelectList(_db.Dersler.ToList(), "PKfromDersler", "DersName");
var values = (from Ders in _db.Dersler
select Ders).ToList();
ViewBag.v1 = new SelectList(values, "Id", "DersName");
return View(new Ogretmen()); //Here pass the model object
}View
@model Ogretmen
<!--
Your view code...
...
@*
model.yourId is the id of Ogretmen class for which you bind the value from dropdownlist
*@
@Html.DropDownListFor(model => model.yourId, (IEnumerable<SelectListItem>)ViewBag.v1, "-- Option label --", new { @class = "form-control" })
...
-->https://stackoverflow.com/questions/73638038
复制相似问题