![](/img/trans.png)
[英]The model item passed into the dictionary is of type 'System.Data.Entity.Infrastructure.DbQuery
[英]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.