データベースから最も人気のあるタグを表示するのに問題があります。この質問のタイトルについてはよくわかりません。誰かがより良いものを持っている場合は、名前を変更してください。
シナリオ
最近の投稿、最近のギャラリー、最も人気のあるタグをインデックスページに表示する必要があります。これにはタプルを使用することにしましたが、最も人気のあるタグを表示しようとするまでは問題なく機能しました。
エラー
ディクショナリに渡されるモデルアイテムのタイプは「System.Tuple2
3[photoBlog.Models.Gallery[],photoBlog.Models.Post[],System.Linq.IGrouping
[System.Int32、photoBlog.Models.PostTag] []]」ですが、このディクショナリにはタイプ「System.Tuple`3[photoBlog.Models」のモデルアイテムが必要です。 .Gallery []、photoBlog.Models.Post []、photoBlog.Models.PostTag[]]'。
ご覧のとおり、ビューに間違ったオブジェクトタイプが表示されます。配列になることを期待したいのですが、なんらかのSystem.Linq.Grouping
アイテムが得られます。
コード
ご覧のとおり、コントローラーで配列に変換します。
public ActionResult Index()
{
photoBlogModelDataContext _db = new photoBlogModelDataContext();
var posts = _db.Posts.OrderByDescending(x => x.DateTime).Take(4).ToArray();
var galleries = _db.Galleries.OrderByDescending(x => x.ID).Take(4).ToArray();
var posttags = _db.PostTags.GroupBy(x => x.TagID).OrderBy(x => x.Count()).Take(4).ToArray();
return View(Tuple.Create(galleries, posts, posttags));
}
私の見解は単純明快です。最も人気のあるタグを追加しようとするまで、これは機能したことに注意してください。
@model Tuple<photoBlog.Models.Gallery[], photoBlog.Models.Post[], photoBlog.Models.PostTag[]>
@foreach (var tag in Model.Item3)
{
@tag.Tag.Name
}