2017-01-31 11 views
0

」をタイプする':ASP.NET MVC System.Data.Entity.Infrastructure.DbQuery`Modelは私のコントローラでのコード行を持っているモデル '

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

return View(blogClass); 

を私はこのエラーを取得する:

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

私はそれを取り除くことができることを知っています、最初またはデフォルトを得ることによって、私はすべての結果が欲しいです。

私の見解で、私はこれを持っているので:

@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; } 
    } 
+0

'dbBlog.Data'のタイプは何ですか? – Shyju

+0

更新された質問 – user979331

答えて

1

Whereメソッドがコレクションを返します。単一のBlogClassオブジェクトにコレクション(、具体的にはIQueryable)をキャストしようとしています。それは意味をなさない!

where句に一致する項目が1つだけの場合は、FirstOrDefaultメソッドを使用します。

I know I can get rid of it by getting first or default, however I want all the results.

すべてが必要な場合は、1つのインスタンスにキャストしないでください。また、コレクションに厳密に型指定されるようにビューを変更します。

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

は今、ビューが強く、私はまた、C#クラスのためのPascalCasingを使用することをお勧めBlogClass

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

のリストに入力する必要があります。また、クラス名の末尾にClassという接尾辞が付いている点は何ですか?あなたはそれがクラスであることを知っています:)

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

    public string Title { get; set; } 
} 
+0

あなたは大変ありがとうございます。 – user979331

関連する問題