Mon*_*ome 7 asp.net-mvc entity-framework
我在SO上读过类似的问题,但似乎无法弄清楚这个问题,这个问题特定于DBContext对象(我认为).这里有一些虚拟代码来说明.
我的Index()操作中有以下代码:
public ActionResult Index()
{
AnimalDBContext db = new AnimalDBContext();
return View(db.Dogs);
}
Run Code Online (Sandbox Code Playgroud)
我的模型有以下代码:
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; }
}
Run Code Online (Sandbox Code Playgroud)
在我看来,我有以下几点:
@model IEnumerable<AnimalProject.Models.Dog>
@foreach (var d in Model)
{
<h3>@d.name</h3>
<h2>@d.breed</h2>
}
Run Code Online (Sandbox Code Playgroud)
一切都很好,视图将遍历我的数据库中的每只狗.但是,我在同一视图中有另一组我想要的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>
}
Run Code Online (Sandbox Code Playgroud)
我已经尝试将类分组并使用局部视图,但显然你不能在局部视图中使用不同的模型,因为我总是收到错误消息:
"传递到字典中的模型项的类型为'System.Data.Entity.DbSet
1[AnimalProject.Models.Dog]', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable1 [AnimalProject.Models.Cat]'."
那么,我如何在我的视图中使用多个模型,这两个模型都从数据库中的不同表中获取我想要的数据?
Lad*_*nka 13
那么创建自定义视图模型类:
public AnimalModel
{
public IEnumerable<Dog> Dogs { get; set; }
public IEnumerable<Cat> Cats { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
在Index中填充此模型并将其传递给预期AnimalModel而不是枚举的视图.
编辑:
填充模型:
public ActionResult Index()
{
using (var db = new AnimalDBContext())
{
var model = new AnimalModel
{
Dogs = db.Dogs.ToList(),
Cats = db.Cats.ToList()
};
return View(model);
}
}
Run Code Online (Sandbox Code Playgroud)
查看(我从未使用过剃刀,所以我希望这是正确的):
@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>
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20363 次 |
| 最近记录: |