gpt4 book ai didi

asp.net-mvc - 如何在 ASP.NET MVC 的一个 View 中使用多个模型?

转载 作者:行者123 更新时间:2023-12-04 10:05:34 24 4
gpt4 key购买 nike

我已经阅读了关于 SO 的类似问题,但似乎无法弄清楚这个问题,这是特定于 DBContext 对象的(我认为)。这里有一些虚拟代码来说明。

我的 Index() 操作中有以下代码:

    public ActionResult Index()
{
AnimalDBContext db = new AnimalDBContext();

return View(db.Dogs);
}

我的模型有以下代码:
    public class Dog
{
public int ID { get; set; }
public string name { get; set; }
public string breed { get; set; }
}

public class AnimalDBContext : DbContext
{
public DbSet<Dog> Dogs { get; set; }
}

在我看来,我有以下几点:
@model IEnumerable<AnimalProject.Models.Dog>
@foreach (var d in Model)
{
<h3>@d.name</h3>
<h2>@d.breed</h2>
}

一切正常, View 将遍历我数据库中的每条狗。但是,我在同一 View 中还有来自另一个表的另一组 DBContext 数据。我也希望能够为该表枚举数据库中的每个项目。

这就是我想要的,如果你明白我的意思:
@model IEnumerable<AnimalProject.Models.Dog>
@model IEnumerable<AnimalProject.Models.Cat>
@foreach (var d in Dog)
{
<h3>@d.name</h3>
<h2>@d.breed</h2>
}
@foreach (var c in Cat)
{
<h3>@c.name</h3>
<h2>@c.breed</h2>
}

我尝试将类组合在一起并使用局部 View ,但显然在局部 View 中不能有不同的模型,因为我总是收到错误消息:

"The model item passed into the dictionary is of type 'System.Data.Entity.DbSet1[AnimalProject.Models.Dog]',
but this dictionary requires a model
item of type
'System.Collections.Generic.IEnumerable
1[AnimalProject.Models.Cat]'."



那么,如何在我的 View 中使用多个模型来从数据库中的单独表中获取我想要的数据?

最佳答案

创建自定义 View 模型类怎么样:

public AnimalModel
{
public IEnumerable<Dog> Dogs { get; set; }
public IEnumerable<Cat> Cats { get; set; }
}

在 Index 中填充此模型并将其传递给期望 AnimalModel 的 View 而不是枚举。

编辑:

填充模型:
public ActionResult Index()
{
using (var db = new AnimalDBContext())
{
var model = new AnimalModel
{
Dogs = db.Dogs.ToList(),
Cats = db.Cats.ToList()
};

return View(model);
}
}

查看(我从未使用过 Razor 所以我希望这是正确的):
@model AnimalProject.Models.AnimalModel
@foreach (var d in Model.Dogs)
{
<h3>@d.name</h3>
<h2>@d.breed</h2>
}
@foreach (var c in Model.Cats)
{
<h3>@c.name</h3>
<h2>@c.breed</h2>
}

关于asp.net-mvc - 如何在 ASP.NET MVC 的一个 View 中使用多个模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5829315/

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