gpt4 book ai didi

c# - 传入字典的模型项的类型为 'System.Data.Entity.Infrastructure.DbQuery' ,但该字典需要类型为 B 的模型项

转载 作者:行者123 更新时间:2023-11-30 20:00:23 24 4
gpt4 key购买 nike

我遇到了一种情况,我尝试在网上找到解决方案,但没有成功。我是使用 Entity Framework 的 MVC 新手,当我尝试运行应用程序时它抛出异常:

The model item passed into the dictionary is of type 'System.Data.Entity.Infrastructure.DbQuery1[<>f__AnonymousType12[UnRelatedEntity.Models.t_AbortReason,UnRelatedEntity.Models.t_Activity]]', but this dictionary requires a model item of type 'UnRelatedEntity.Models.MobilePhoneXchangeEntities1'

我使用一个实体作为模型,它分别从两个表中获取数据,它们之间没有关系。

Controller :

public ActionResult Index()
{
MobilePhoneXchangeEntities1 ent = new MobilePhoneXchangeEntities1();
var result = from foo in ent.t_AbortReason
from bar in ent.t_Activity
where foo.AbortReasonCategoryId != null && bar.ActivityId != null
select new { Foo = foo, Bar = bar };
return View(result);
}

查看

@model UnRelatedEntity.Models.MobilePhoneXchangeEntities1

在 View 中,我只是写了上面的行,我的意思是我只是继承了模型,没有别的,但我仍然对如何输入 cast model w.r.t model 感到困惑,但我无能为力。

任何人都可以为此提供帮助,但请记住我在我的模型中使用了两个不相关的表。

最佳答案

正如 Shad 指出的那样,您收到此错误的原因仅仅是因为您向 View 中传递的数据类型与您所说的不同。

要解决这个问题,您需要一个模型,您可以将其传递到包含所需数据的 View 中:

public class FooBarModel
{
public AbortReason Foo { get;set;}
public Activity Bar { get;set;}
}

然后,在您的 Index 方法中,执行如下操作:

using(MobilePhoneXchangeEntities1 ent = new MobilePhoneXchangeEntities1())
{
var result = from foo in ent.t_AbortReason
from bar in ent.t_Activity
where foo.AbortReasonCategoryId != null && bar.ActivityId != null
select new FooBarModel() { Foo = foo, Bar = bar };
return View(result);
}

在您的 View 中,设置模型类型:

@model IEnumerable<my.namespace.FooBarModel>

关于c# - 传入字典的模型项的类型为 'System.Data.Entity.Infrastructure.DbQuery' ,但该字典需要类型为 B 的模型项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21110590/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com