繁体   English   中英

ASP.NET MVC System.Data.Entity.Infrastructure.DbQuery`Model'以键入'Model'

[英]ASP.NET MVC System.Data.Entity.Infrastructure.DbQuery`Model’ to type ‘Model’

我的控制器中有以下代码行:

BlogClass blogClass = (BlogClass)dbBlog.Data.Where(model => model.category == id.ToString());

return View(blogClass);

我收到此错误:

System.Data.Entity.Infrastructure.DbQuery`Model’ to type ‘Model’.

我知道我可以通过获得first或default来摆脱它,但是我想要所有结果。

因为在我看来,我有:

@model Project.Models.BlogClass

我的问题是我如何在课堂上获得所有结果?

附加信息:

private Blog dbBlog = new Blog();

public class BlogClass
    {
        public int id { get; set; }
        [DisplayName("Title")]
        public string title { get; set; }
        [DisplayName("Post")]
        public string post { get; set; }
        [DisplayName("Date")]
        [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}")]
        [DataType(DataType.Date)]
        public string date { get; set; }
        [DisplayName("Featured Image")]
        public string featuredImage { get; set; }
        [DisplayName("Category")]
        public string category { get; set; }
    }

    public class Blog : DbContext
    {
        public DbSet<BlogClass> Data { get; set; }
    }

Where方法返回一个集合。 您正在尝试将集合( 特别是IQueryable )转换为单个BlogClass对象! 那没有道理!

如果您只查找与where子句匹配的单个项目,请使用FirstOrDefault方法。

我知道我可以通过获得first或default来摆脱它,但是我想要所有结果。

如果需要所有这些,则不应将其强制转换为单个实例。 还要更改您的视图,以便将其强类型化为集合。

var blogList = dbBlog.Data.Where(model => model.category == id.ToString()).ToList();    
return View(blogList);

现在,应将视图强类型化为BlogClass列表

@model List<ReplaceYourNameSpaceHere.BlogClass>
@foreach(var b in Model)
{
  <h2>@b.title</b>
}

我还建议对C#类使用PascalCasing 还有,为类名添加Class后缀有什么意义? 你知道这是一堂课:)

public class Blog
{
    public int Id { get; set; }

    public string Title { get; set; }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM