从两个模型填充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.IEnumerable1CallViewerData.Models.DataModel'.

任何帮助都将不胜感激。

转载请注明出处:http://www.aqguliang.com/article/20230330/2204448.html