1

これは非常に基本的な問題のようですが、何が間違っているのかわかりません。「FavId」、UserId、および PostId を含む「FavouritePost」のリストがあります。このクラスは、ユーザーが「お気に入り」リストに投稿を追加したかどうかを判断するために使用されます。私のコントローラーでは、現在のuserIdに一致する投稿のみを選択して、投稿を除外します。私の見解では、次の foreach ループがあります。

@foreach (var fav in Model.FavPosts)
{
    if (post.PostId == fav.PostId)
    {
        <img src="@Url.Content("~/Content/images/favourite_img.jpg")" alt="" />
    }
    else if (post.PostId != fav.PostId)
    {
        <img src="@Url.Content("~/Content/images/Notfavourite_img.jpg")" alt="" />
    }
}

私の問題はこれです: foreach ループが実行されると、ユーザーがその投稿を「気に入った」かどうかに基づいて、投稿の横に画像が表示されます。ただし、次のコードを実行すると、投稿の横に複数の画像が割り当てられます。たとえば、次の表データに基づいています。

FavId      UserId      PostId

  1          1           1
  2          1           2
  3          1           4

UserId = 1、3 つの投稿 (1、2、4) にいいね! しましたが、UserId = 1 は投稿 3 に「いいね」していません。

ただし、ページを実行すると、最初の投稿で 3 つの画像が表示されます。

Post 1 = "Liked Image", "Not Liked Image", "Not Liked Image"
Post 2 = "Not Liked Image", "Liked Image", "Not Liked Image"
Post 2 = "Not Liked Image", "Not Liked Image", "Liked Image"

3 回繰り返し、1 つの画像ではなく 3 つの画像を投稿に割り当てているようです。リスト内の UserId の数が原因であることに気付きましたが、条件ステートメントが代替画像の表示を停止すると思いました。冗長な質問で申し訳ありませんが、私のジレンマを理解するのが簡単になると思っただけです。どんな助けでも素晴らしいでしょう。

4

2 に答える 2

0

どうですか:

@if(Model.FavPosts.Where(f => post.PostId == f.PostId).Any())
{
     <img src="@Url.Content("~/Content/images/favourite_img.jpg")" alt="" />
}
else
{
     <img src="@Url.Content("~/Content/images/Notfavourite_img.jpg")" alt="" />
}

私の理解が正しければ、あなたは投稿が FavPost リストにエントリがあるかどうかを確認したいと考えています。Notfavorite 画像ではなく、お気に入りの画像を出力するエントリがある場合。

于 2013-05-07T18:40:53.563 に答える