【问题标题】:The model item passed into the dictionary is of type 'System.Data.Objects.ObjectResult`1传入字典的模型项的类型为“System.Data.Objects.ObjectResult”1
【发布时间】:2011-12-17 20:58:54
【问题描述】:

我正在尝试传递一个映射到名为ListLeagueLeaders() 的方法的存储过程,但调用存储过程的自动生成方法ObjectResult<ListLeagueLeaders_Result> ListLeagueLeaders() 需要一个ObjectResult 类型。我能做些什么来解决这个问题?

我曾想过使用 LINQ 而不是存储过程,但我想给这个策略最后一次机会。相关:LINQ to Entities instead of stored procedure?

HomeController

    public class HomeController : Controller
    {

        HockeyStatsEntities db = new HockeyStatsEntities();

        public ActionResult Index()
        {
            ViewBag.Message = "League leaders";
            {
                return View(db.ListLeagueLeaders());
            }
        }

        private ICollection<ListLeagueLeaders_Result> ListLeagueLeaders()
        {
            ICollection<ListLeagueLeaders_Result> leagueLeadersCollection = null;

            using (HockeyStatsEntities context = new HockeyStatsEntities())
            {
                foreach (ListLeagueLeaders_Result leagueLeader in
                          context.ListLeagueLeaders())
                {
                    leagueLeadersCollection.Add(leagueLeader);
                }
            }
            return leagueLeadersCollection;
        }
    }

Model1.Context.cs

public partial class HockeyStatsEntities : DbContext
    {

        public DbSet<Dim_Date> Dim_Date { get; set; }
        public DbSet<Dim_Player> Dim_Player { get; set; }
        public DbSet<Dim_Team> Dim_Team { get; set; }
        public DbSet<Fact_Statistics> Fact_Statistics { get; set; }
        public DbSet<Dim_Game> Dim_Game { get; set; }

        public virtual ObjectResult<ListLeagueLeaders_Result> ListLeagueLeaders()
        {
            ((IObjectContextAdapter)this).ObjectContext.MetadataWorkspace.LoadFromAssembly(typeof(ListLeagueLeaders_Result).Assembly);

            return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<ListLeagueLeaders_Result>("ListLeagueLeaders");
        }
    }

查看:

@model NHLStats2.Models.ListLeagueLeaders_Result

@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-3 entity-framework stored-procedures entity-framework-4


    【解决方案1】:

    您的视图出现此错误。您需要引用从控制器操作中重新调整的相同对象类型。

    例如,如果您从控制器操作返回 List&lt;Foo&gt; 类型,则只能将视图强类型化为 List&lt;Foo&gt;IList&lt;Foo&gt;IEnumerable&lt;Foo&gt; 等。

    【讨论】:

    • 我已经编辑了我的帖子。我已经添加了视图,你可以看到它是NHLStats2.Models.ListLeagueLeaders_Result 的强类型,不应该是这样吗?这是问题的根源吗?如果是这样,你会用什么来代替它?
    • @model NHLStats2.Models.ListLeagueLeaders_Result 替换为@model ObjectResult&lt;NHLStats2.Models.ListLeagueLeaders_Result&gt;。据我所知,它应该可以通过查看您的代码来工作。
    猜你喜欢
    • 1970-01-01
    • 2021-10-16
    • 1970-01-01
    • 1970-01-01
    • 2019-06-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 2021-10-01
    相关资源
    最近更新 更多