c# - DropDownList 错误,System.InvalidOperationException
问题描述
创建.cshtml
@Html.DropDownList("KategoriId",null,htmlAttributes: new { @class="form-control"})
MakaleController.cs
public ActionResult Create()
{
ViewBag.KategoriId = new SelectList(db.Kategoris, "KategoriId", "KategoriAdi");
return View();
}
但它说当我发出一个帖子请求时,
具有“KategoriId”键的 ViewData 元素属于“System.Int32”类型,但属于“IEnumerable”类型。
如何解决这个错误,我尝试了很多方法,但没有发生。他说该值通常为空。
Kategori.cs(!!不是 KATEGORIS,我先用代码创建)
[Table("Kategori")]
public partial class Kategori
{
public int KategoriId { get; set; }
[StringLength(50)]
public string KategoriAdi { get; set; }
public virtual Makale Makale { get; set; }
}
解决方案
更新了 您的下拉定义不正确
它应该如下所示
@Html.DropDownListFor(m => m.CategoryID, Model.CategoryList, "-Please select-")
您将 null 传递给 Dropdownlist,但它应该至少是一个空列表您还尝试将下拉列表数据保留在 viewbag 中。它应该是视图模型中的 List 属性。PS:由于可读性问题,在全局项目中不接受在变量名中使用原生单词 =)
PS:您可以从此处查看类似的问题和答案具有键“XXX”的 ViewData 项的类型为“System.Int32”,但必须为“IEnumerable<SelectListItem>”类型
推荐阅读
- sql - 如何使用持久化和右()执行列更改?
- kubernetes - 如何使用 Terraform 在 GKE 中设置非默认服务帐户?
- android - Navigation resets when switching fragments
- reactjs - 从 Apollo 查询设置初始反应上下文状态
- python - 如果在Python中给出行和列的总和,如何找到矩阵的元素
- memory - 如何计算一个非常大的惰性序列中的元素数量?
- sql - 我需要获取每个部门的员工人数
- java - 如何使客户端-服务器套接字应用程序以同步的方式访问数据并对其进行测试
- bash - 收集外部输出(回声)并保存为测试变量
- python - Python不输出sql查询的结果