我用实体创建了两个不同的表。 代码如下所示:
public class Frisorer
{
public int Id { get; set; }
public string Name { get; set; }
public List<Scheman> Schema { get; set; }
}
public class Scheman
{
public int Id { get; set; }
public DateTime Schemat { get; set; }
public virtual Frisorer frisorer { get; set; }
}
我的上下文文件:
public class Context : DbContext
{
public Context()
: base("DefaultConnection")
{
}
public DbSet<Frisorer> Frisorer { get; set; }
public DbSet<Scheman> Scheman { get; set; }
}
使用密钥建立表之间的关系可以创建表格。 我现在想要的是能够在MVC的同一视图中显示我的frisor的名称/ id和他们的模式。但是当我尝试添加一个视图时,我只能选择带有Frisorer OR Schemas的强类型视图......我怎样才能同时显示两个表?
编辑:
我创建了一个新类,我在其中对其他两个类进行了编程:
public class Frisorer
{
public int Id { get; set; }
public string Name { get; set; }
public List<Scheman> Schema { get; set; }
}
public class Scheman
{
public int Id { get; set; }
public DateTime Schemat { get; set; }
public virtual Frisorer frisorer { get; set; }
}
public class BigViewModel
{
public List<Frisorer> Frisorer { get; set; }
public List<Scheman> Scheman { get; set; }
}
控制:
public ActionResult hopp()
{
BigViewModel bv = new BigViewModel();
bv.Frisorer = (from o in cont.Frisorer select o).ToList();
bv.Scheman = (from or in cont.Scheman select or).ToList();
return View(bv);
}
我创建了一个视图,我选择BigViewModel作为强类型,并列为脚手架。 得到此错误: 传递到字典中的模型项的类型为“MvcApplication3.Models.BigViewModel”,但此字典需要类型为“System.Collections.Generic.IEnumerable`1 [MvcApplication3.Models.BigViewModel]”的模型项
答案 0 :(得分:1)
创建第三个类,某种类型的ViewModel / Wrapper,它将封装您需要的所有内容。然后在您的视图中引用它。
答案 1 :(得分:1)
您只需将视图中的模型从@model IEnumerable<BigViewModel>
更改为@model BigViewModel
,然后迭代Frisorer
和Scheman
,如下所示:
@model BigViewModel
<ul>
@foreach(var item in Model.Frisorer)
{
<li>@item.Id - @item.Name</li>
}
</ul>
<ul>
@foreach(var item in Model.Scheman)
{
<li>@item.Id - @item.Schemat</li>
}
</ul>
答案 2 :(得分:1)
您收到异常是因为当视图预期收集object
时,您将单个BigViewModel
传递给视图。
尝试将视图中的模型分配更改为:@model BigViewModel
而不是@model IEnumerable<BigViewModel>
,然后在Model
中迭代集合:
@foreach(var frisor in Model.Frisorer)
{
//do stuff
}
@foreach(var schema in Model.Scheman)
{
//do stuff
}