从两个模型填充Razor视图
我使用的是MVC中的实体框架。我有两个使用DBContext从SQL表填充的模型。
public class Incident
{
public Guid IncidentKey { get; set; }
public int IncidentID { get; set; }
}
public class Request
{
public Guid RequestKey { get; set; }
public int RequestID { get; set; }
}
下面是我如何从SQL中获取要提取的数据
public class CallViewerDbContext : DbContext
{
public DbSet<Incident> Incident { get; set; }
public DbSet<Request> Request { get; set; }
}
public class SqlData : IIncident, IRequest
{
private readonly CallViewerDbContext db;
public SqlData(CallViewerDbContext db)
{
this.db = db;
}}
internal static void RegisterContainer(HttpConfiguration httpConfiguration)
{
var builder = new ContainerBuilder();
builder.RegisterControllers(typeof(MvcApplication).Assembly);
builder.RegisterApiControllers(typeof(MvcApplication).Assembly);
builder.RegisterType<SqlData>()
.As<IIncident>()
.InstancePerRequest();
builder.RegisterType<SqlData>()
.As<IRequest>()
.InstancePerRequest();
builder.RegisterType<CallViewerDbContext>().InstancePerRequest();
var container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
httpConfiguration.DependencyResolver = new AutofacWebApiDependencyResolver(container);
}
我正在尝试创建一个新的模型,当我把它放在一个新的Razor视图上时,它将允许我获得两个实体的计数。我目前可以通过使用下面的方法获得一个。
IIncident db;
public HomeController(IIncident db)
{
this.db = db;
}
public ActionResult Index()
{
var model = db.IGetAll();
return View(model);
}
public IEnumerable<Incident> IGetAll()
{
return db.Incident;
}
我试着做了一个新模型。
public class DataModel
{
public List<Incident> allIncidents { get; set; }
public List<Request> allRequests { get; set; }
}
我尝试将其添加到寄存器容器中
builder.RegisterType<SqlData>()
.As <IDataModel>()
.InstancePerRequest();
然后更新了Home控制器
IDataModel db;
public HomeController(IDataModel db)
{
this.db = db;
}
public ActionResult Index()
{
var model = db.MGetAll();
return View(model);
}
public IEnumerable<Incident> MGetAll()
{
return db.Incident;
}
我尝试使用MGetAll方法返回数据以获取事件列表,然后我有另一个方法对请求执行相同的操作。我试图首先将单个计数返回给视图,然后添加第二个计数。
我现在得到下面的堆栈跟踪错误
传递到字典的模型项的类型为'System.Data.Entity.DbSet1[CallViewerData.Models.Incident]', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable
1CallViewerData.Models.DataModel'.
任何帮助都将不胜感激。
转载请注明出处:http://www.aqguliang.com/article/20230330/2204448.html