【问题标题】:The model item passed into the dictionary is of type List`1 but this dictionary requires a model item of type IEnumerable传入字典的模型项是 List`1 类型,但此字典需要 IEnumerable 类型的模型项
【发布时间】:2023-03-30 22:20:02
【问题描述】:

提前感谢您的帮助。

MVC 新手,所以可能很容易回答。我收到了这个错误,不知道它是什么意思。这是我的代码:

我的看法:

@model carBayWebsite.Models.WishList

@{
    ViewBag.Title = "Create";
}

<h2>Create</h2>


@using (Html.BeginForm("Create",
  "WishLists",
  FormMethod.Post,
  new { enctype = "multipart/form-data" }))
{
@Html.AntiForgeryToken()

<div class="form-horizontal">
    <h4>Add to WishList?</h4>
    <hr />
    <p>Are you sure you want to add this to your Wish List?</p>
    @Html.ValidationSummary(true, "", new { @class = "text-danger" })

    <div class="form-group">
        <div class="col-md-offset-2 col-md-10">
            @Html.HiddenFor(m => m.AdvertId)
        </div>
    </div>
    <div class="form-group">
        <div class="col-md-offset-2 col-md-10">
            @Html.HiddenFor(m => m.AdvertId)
        </div>
    </div>
    <div class="form-group">
        <div class="col-md-offset-2 col-md-10">
            <input type="submit" value="Add" class="btn btn-default"/>
        </div>
    </div>
</div>
}

<div>
@Html.ActionLink("Back to List", "Index")
</div>

@section Scripts {
    @Scripts.Render("~/bundles/jqueryval")
}

我的控制器

public class WishListsController : Controller
{
    private Entities2 db = new Entities2();

    public ActionResult Index()
    {
        string userName = User.Identity.GetUserName();
        var wishlist = from ads in db.Adverts
                      join wish in db.WishLists
                      on ads.AdvertId equals wish.AdvertId
                      where wish.UserId.Contains(userName)
                      select wish;

        return View(wishlist.ToList());
    }

    // GET: WishLists/Details/5
    public ActionResult Details(int? id)
    {
        if (id == null)
        {
            return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
        }
        WishList wishList = db.WishLists.Find(id);
        if (wishList == null)
        {
            return HttpNotFound();
        }
        return View(wishList);
    }

    public ActionResult Create(int? id)
    {
        if (id == null)
        {
            return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
        }
        else
        { 
        string usID = User.Identity.GetUserId().ToString();
        int adID = Convert.ToInt32(id);
        WishList wishList = db.WishLists.Find(id);
        ViewBag.userId = usID;
        ViewBag.advertId = adID;
            return View(wishList);
        }




    }

    // POST: WishLists/Edit/5
    // To protect from overposting attacks, please enable the specific properties you want to bind to, for 
    // more details see http://go.microsoft.com/fwlink/?LinkId=317598.
    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Create(WishList wishList)
    {
        if (ModelState.IsValid)
        {

            db.WishLists.Add(new WishList
            {
                UserId = ViewBag.userId,
                AdvertId = Convert.ToInt32(ViewBag.advertID),
            });
                        try {
                        db.SaveChanges();
                        }

                        catch (DbEntityValidationException dbEx)
                            {
                                foreach (var validationErrors in dbEx.EntityValidationErrors)
                                {
                                    foreach (var validationError in validationErrors.ValidationErrors)
                                    {
                                        Trace.TraceInformation("Property: {0} Error: {1}", 
                                                                validationError.PropertyName, 
                                                                validationError.ErrorMessage);
                                    }
                                }
                            }


            return RedirectToAction("Index");
        }
        return View(wishList);


    }

谁能弄清楚出了什么问题?环顾四周,我觉得它非常简单,就像第一个 View 一样,但我无法确定它! :)

错误详情

传入字典的模型项的类型为“System.Collections.Generic.List1[carBayWebsite.Models.Advert]”,但该字典需要类型为“System.Collections.Generic.IEnumerable1[carBayWebsite. Models.WishList]'

【问题讨论】:

  • 我提交了视图
  • 错误信息中List&lt;T1&gt;IEnumerable&lt;T2&gt;的泛型类型参数是什么? T1T2 是同一类型吗?
  • @zgoog 不,它说当我放入时,wishList 不包含 ToList 的定义
  • @CodeNotFound 当我单击视图中的提交输入按钮时。
  • @erdinger 完整的错误消息说:传递到字典中的模型项的类型为“System.Collections.Generic.List1[carBayWebsite.Models.Advert]', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable1[carBayWebsite.Models.WishList]”。

标签: c# asp.net-mvc entity-framework


【解决方案1】:

我认为您向我们展示的视图是Create。(因为标题是“创建”)

您正在传递给Create 查看whisList 这是WhisList return View(wishList); 的类型

但是您的视图在视图开头等待Advert@model carBayWebsite.Models.Advert

我认为这是问题所在。如果不是,请告诉我。

【讨论】:

  • 你说错了是绝对正确的,但这是我试图早点修复它的错误。完全忘记改回来了。错误还是一模一样!
猜你喜欢
  • 2011-09-06
  • 2020-09-08
  • 1970-01-01
  • 2022-01-16
  • 2015-09-19
  • 2013-10-17
  • 1970-01-01
  • 2012-10-18
  • 2013-10-18
相关资源
最近更新 更多