将List通过控制器传递到IEnumerable视图ASP.NET MVC 4

时间:2014-02-28 20:15:17

标签: c# asp.net sql asp.net-mvc asp.net-mvc-4

我已将子类别表连接到模型中的主表。结构类似于下面的结构。

Structure of my sql

但是,我需要从不同的表(子表)访问我的主表“Article”中的信息。所以我在索引中的ArticleController中编写了额外的代码,如下所示。

控制器:

    public ActionResult Index()
    {

        var articles = db.DataToArticles.Include(a => a.AgeGroup).Include(a => a.Disabilities).Include(a => a.StrategyType);

        return View(articles.ToList());
    } 

“DataToArticles”类似于上面的“StrategyTypeToArticle”表。

这是我的数据访问层,我没有遇到任何问题 DAL:

public class ArticleEntities : DbContext
{
    public DbSet<AgeGroup> AgeGroups { get; set; }
    public DbSet<Disabilities> Disabilitiess { get; set; }
    public DbSet<StrategyType> StrategyTypes { get; set; }
    public DbSet<Article> Articles { get; set; }
    public DbSet<UserProfile> Profiles { get; set; }
    public DbSet<DataToArticle> DataToArticles { get; set; }


    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
        modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();
    }
}

现在我认为,这给了我一个错误 查看

@model IEnumerable<LearningEnterprises.Models.Article>


问题
问题是将控制器中的articles变量传递给我的视图IEnumberable。我知道它将它作为列表传递,但我之前没有遇到过这方面的问题。有没有办法解决这个问题?

2 个答案:

答案 0 :(得分:2)

由于您正在查询db.DataToArticles,因此您将IEnumerable<LearningEnterprises.Models.DataToArticle>传递给视图而不是IEnumerable<LearningEnterprises.Models.Article>

答案 1 :(得分:0)

我认为你需要传递StrategyTypesTo然后你会得到文章和var文章可能不再是文章类型,因为你传递了那么多额外的

为了方便您使用动态或尝试其他帖子建议

List<dynamic> articles = db.DataToArticles.Include(a => a.AgeGroup).Include(a => a.Disabilities).Include(a => a.StrategyType);

@model List<dynamic>