2012-04-06 14 views
0

こんにちは私は、それぞれのゲームは、よく動作するアカウント所有者に固有のものでなければならないという質問があります。レビューを書くことができるすべてのユーザのゲームを選択する。問題はドロップダウンで、他のユーザーによって追加されたゲームが表示されていることを示しています。これは、ゲームを追加したユーザーだけが固有のものにしたいと思っています。ここユーザーに固有のドロップダウンを行う

は私のレビューコントローラです:

using System; 
using System.Collections.Generic; 
using System.Data; 
using System.Data.Entity; 
using System.Linq; 
using System.Web; 
using System.Web.Mvc; 
using GameTest.Models; 

    namespace GameTest.Controllers 
    { 
     public class ReviewController : Controller 
     { 
      private gamezoneDBEntities db = new gamezoneDBEntities(); 

      // 
      // GET: /Review/ 

      public ViewResult Index() 
      { 
       var Info = db.tblReviews.Include(x => x.tblGame).Where(UserInfo => UserInfo.UserName.Equals(User.Identity.Name)).ToList(); 
       return View(Info); 
      } 

      // 
      // GET: /Review/Details/5 

      public ViewResult Details(int id) 
      { 
       tblReview tblreview = db.tblReviews.Find(id); 
       return View(tblreview); 
      } 

      // 
      // GET: /Review/Create 

      public ActionResult Create() 
      { 
       ViewBag.GameIDFK = new SelectList(db.tblGames, "GameID", "GameName"); 
       return View(new tblReview { UserName = @User.Identity.Name }); 
      } 

      // 
      // POST: /Review/Create 

      [HttpPost] 
      public ActionResult Create(tblReview tblreview) 
      { 
       if (ModelState.IsValid) 
       { 
        db.tblReviews.Add(tblreview); 
        db.SaveChanges(); 
        return RedirectToAction("Index"); 
       } 

       ViewBag.GameIDFK = new SelectList(db.tblGames, "GameID", "GameName", tblreview.GameIDFK); 
       return View(tblreview); 
      } 

      // 
      // GET: /Review/Edit/5 

      public ActionResult Edit(int id) 
      { 
       tblReview tblreview = db.tblReviews.Find(id); 
       ViewBag.GameIDFK = new SelectList(db.tblGames, "GameID", "GameName", tblreview.GameIDFK); 
       return View(tblreview); 
      } 

      // 
      // POST: /Review/Edit/5 

      [HttpPost] 
      public ActionResult Edit(tblReview tblreview) 
      { 
       if (ModelState.IsValid) 
       { 
        db.Entry(tblreview).State = EntityState.Modified; 
        db.SaveChanges(); 
        return RedirectToAction("Index"); 
       } 
       ViewBag.GameIDFK = new SelectList(db.tblGames, "GameID", "GameName", tblreview.GameIDFK); 
       return View(tblreview); 
      } 

      // 
      // GET: /Review/Delete/5 

      public ActionResult Delete(int id) 
      { 
       tblReview tblreview = db.tblReviews.Find(id); 
       return View(tblreview); 
      } 

      // 
      // POST: /Review/Delete/5 

      [HttpPost, ActionName("Delete")] 
      public ActionResult DeleteConfirmed(int id) 
      {    
       tblReview tblreview = db.tblReviews.Find(id); 
       db.tblReviews.Remove(tblreview); 
       db.SaveChanges(); 
       return RedirectToAction("Index"); 
      } 

      protected override void Dispose(bool disposing) 
      { 
       db.Dispose(); 
       base.Dispose(disposing); 
      } 
     } 
    } 

私はゲームを一意にするために使用していると独特のレビューはこれですコード:

var Info = db.tblReviews.Include(x => x.tblGame).Where(UserInfo => UserInfo.UserName.Equals(User.Identity.Name)).ToList(); 
      return View(Info); 

私はインデックスにこのコードを追加しましたコントローラの最初の作成セクションに次のコードを追加します。

他に必要なものがあれば教えてください。

すべてのテーブルのデータモデル:

レビュー:

namespace GameTest.Models 
{ 
    using System; 
    using System.Collections.Generic; 

    public partial class tblReview 
    { 
     public int ReviewID { get; set; } 
     public string Recomendation { get; set; } 
     public string AvoidOrBuy { get; set; } 
     public string Score { get; set; } 
     public int GameIDFK { get; set; } 
     public string UserName { get; set; } 

     public virtual tblGame tblGame { get; set; } 
    } 
} 

ゲーム:

namespace GameTest.Models 
{ 
    using System; 
    using System.Collections.Generic; 

    public partial class tblGame 
    { 
     public tblGame() 
     { 
      this.tblReviews = new HashSet<tblReview>(); 
     } 

     public int GameID { get; set; } 
     public string GameName { get; set; } 
     public string ReleaseYear { get; set; } 
     public string Cost { get; set; } 
     public string Description { get; set; } 
     public string Downloads { get; set; } 
     public string Image { get; set; } 
     public string ConsoleNameIDFK { get; set; } 
     public string UserName { get; set; } 

     public virtual tblConsole tblConsole { get; set; } 
     public virtual ICollection<tblReview> tblReviews { get; set; } 
    } 
} 

コンソール:この行の

namespace GameTest.Models 
{ 
    using System; 
    using System.Collections.Generic; 

    public partial class tblConsole 
    { 
     public tblConsole() 
     { 
      this.tblGames = new HashSet<tblGame>(); 
     } 

     public string ConsoleName { get; set; } 

     public virtual ICollection<tblGame> tblGames { get; set; } 
    } 
} 
+0

を表示したくないゲームをフィルタリングするあなただけではなく、完全なリストでは、現在のユーザーを参照し、ゲームの列挙リストを移入する必要がありそうです。 –

+0

どうすればいいですか?あなたはこれにいくつかの助けを提供できますか?私は多くのコードを提供しており、それを解決しようとする試みはあなたにお世話になりました。 – user1137472

+0

あなたのパーシスタンス層を調べる必要があります。あなたはSelectListを正しく構築していません。現在のユーザーの範囲外である項目を除外する必要があります。私は本当にあなたのデータモデルを理解せずに詳細を教えてくれません。 –

答えて

0

、あなたは固執する必要があります.Where(...) on 0123あなたは

ViewBag.GameIDFK = new SelectList(db.tblGames, "GameID", "GameName"); 
     return View(new tblReview { UserName = @User.Identity.Name }); 
    } 
+0

で私の質問を編集した:辞書に渡さ モデルアイテムはタイプGameTest.Models.tblReview」のですが、この辞書はのモデルアイテムが必要です'System.Collections.Generic.IEnumerable'1 [GameTest.Models.tblReview]'と入力します。 – user1137472

+0

私はゲームを投稿したユーザーに固有のものにしたいので、自分のウェブサイトにゲームを投稿してゲームを投稿したとします。あなたのゲームにレビューを書くことができないはずです – user1137472

+0

モデルの 'db.tblGames'を変更します'ICollection'の代わりに' IEnumerable'であることを確認してください。 –

関連する問題