我没有得到这个错误

时间:2014-02-01 10:34:12

标签: asp.net-mvc asp.net-mvc-4

传递到字典中的模型项的类型为'System.Collections.Generic.List 1[Onclickmuseum.Models.PackageModel]', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable 1 [Onclickmuseum.Models.AuctionModel]'。 描述:执行当前Web请求期间发生未处理的异常。请查看堆栈跟踪,以获取有关错误及其在代码中的起源位置的更多信息。

异常详细信息:System.InvalidOperationException:传递到字典中的模型项的类型为“System.Collections.Generic.List 1[Onclickmuseum.Models.PackageModel]', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable 1 [Onclickmuseum.Models.AuctionModel]”。

来源错误:

在执行当前Web请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常的起源和位置的信息。

堆栈追踪:

[InvalidOperationException:传递到字典中的模型项的类型为'System.Collections.Generic.List 1[Onclickmuseum.Models.PackageModel]', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable 1 [Onclickmuseum.Models.AuctionModel]'。]    System.Web.Mvc.ViewDataDictionary 1.SetModel(Object value) +378 System.Web.Mvc.ViewDataDictionary.set_Model(Object value) +47 System.Web.Mvc.ViewDataDictionary..ctor(ViewDataDictionary dictionary) +614 System.Web.Mvc.ViewDataDictionary 1..ctor(ViewDataDictionary viewDataDictionary)+37    System.Web.Mvc.WebViewPage`1.SetViewData(ViewDataDictionary viewData)+98    System.Web.Mvc.WebViewPage.set_ViewData(ViewDataDictionary value)+38    System.Web.Mvc.RazorView.RenderView(ViewContext viewContext,TextWriter writer,Object instance)+458    System.Web.Mvc.BuildManagerCompiledView.Render(ViewContext viewContext,TextWriter writer)+382

2 个答案:

答案 0 :(得分:3)

异常错误消息非常清楚。您有一个强类型的视图或部分:

@model IEnumerable<Onclickmuseum.Models.AuctionModel>

但你的控制器操作传递了List<Onclickmuseum.Models.PackageModel>。确保控制器操作正在向视图传递正确类型的模型。

或者,如果这是在您使用Html.Partial帮助器从主视图渲染的部分内部,请确保除了将部分视图名称作为第一个参数传递外,您还要将模型作为第二个参数是正确的类型。如果没有将第二个参数传递给Html.Partial助手,那么主视图的模型将传递给它,它可能不是同一类型。

答案 1 :(得分:0)

**Controller file of this index page**

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Onclickmuseum.Models;
using System.Data;
using System.ComponentModel.DataAnnotations;
using System.Data.Entity;

namespace Onclickmuseum.Controllers
{
    public class AuctionController : Controller
    {
        //
        // GET: /Auction/
        private OCMContext db = new OCMContext();
        public ActionResult Index()
        {
            ViewBag.CategoryId = new SelectList(db.CategoryModels, "CategoryId", "CategoryName");
            ViewBag.SubcategoryId = new SelectList(db.SubcategoryModels, "SubcategoryId", "SubcategoryName");
            return View();
        }

        [HttpPost]
        public ActionResult Index(AuctionModel auction)
        {
            if(ModelState.IsValid)
            {
                db.Entry(auction).State = EntityState.Added;
                db.SaveChanges();
            }
            return RedirectToAction("Index");
        }

        public ActionResult Search()
        {
            return View(db.PackageModels.ToList());
        }

    }
}