首页 > 解决方案 > 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; }
    }

标签: c#asp.net-mvc

解决方案


更新了 您的下拉定义不正确

它应该如下所示

@Html.DropDownListFor(m => m.CategoryID, Model.CategoryList, "-Please select-")

您将 null 传递给 Dropdownlist,但它应该至少是一个空列表您还尝试将下拉列表数据保留在 viewbag 中。它应该是视图模型中的 List 属性。PS:由于可读性问题,在全局项目中不接受在变量名中使用原生单词 =)

PS:您可以从此处查看类似的问题和答案具有键“XXX”的 ViewData 项的类型为“System.Int32”,但必须为“IEnumerable<SelectListItem>”类型


推荐阅读