首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >InvalidOperationException:键为“Id”的ViewData项为“System.Int32”类型,但必须为“IEnumerable<SelectListItem>”类型

InvalidOperationException:键为“Id”的ViewData项为“System.Int32”类型,但必须为“IEnumerable<SelectListItem>”类型
EN

Stack Overflow用户
提问于 2022-09-07 15:25:03
回答 2查看 82关注 0票数 1

当我运行代码时,它给出了InvalidOperationException:键'Id‘的ViewData项是'System.Int32’类型,但必须是'IEnumerable‘类型。错误我该怎么做?

代码语言:javascript
复制
    //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>
EN

回答 2

Stack Overflow用户

发布于 2022-09-08 02:36:01

你可以试试

@Html.DropDownListFor(Ders=>Ders.Id,new SelectList(ViewBag.v1,"Value","Text"))

这是我的测试结果。

代码语言:javascript
复制
    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();
    }

票数 0
EN

Stack Overflow用户

发布于 2022-09-08 20:43:42

正如我注意到的,您没有将模型传递给View

贝娄的步骤如下:

首先通过创建table

  • Initialize selectlist

Dersler

  • ViewBag获取列表,然后将第一步生成的列表传递给视图。

  • pass模型要查看。

  • 使用Html.DropDownListFor使用ViewBag作为selectlist

创建下拉列表。

代码语言:javascript
复制
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

代码语言:javascript
复制
@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" })
    ...
-->
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73638038

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档