2012-04-06 45 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); 

我加入這個代碼索引控制器部分和以下代碼到控制器的第一個創建部分:

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

如果有其他要求,請告訴我?

數據模型的所有表:

評論:

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

看來你只需要填充的遊戲引用當前用戶,而不是完整列表可枚舉列表中的遊戲。 – 2012-04-06 17:52:28

+0

我該怎麼做?你能爲此提供一些幫助嗎?因爲我已經提供了很多我的代碼並試圖解決它,非常感謝您的回答 – user1137472 2012-04-06 17:54:02

+0

您需要檢查持久層。您沒有正確構建您的SelectList;您需要過濾出當前用戶超出範圍的項目。如果不瞭解您的數據模型,我實在無法告訴您更多細節。 – 2012-04-06 17:58:31

回答

0
在這一行

,你需要堅持一個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 2012-04-06 18:25:38

+0

我希望遊戲對發佈它們的用戶是唯一的,所以說你在我的網站上發佈了一個遊戲,並且我發佈了一個遊戲,我不應該在你的遊戲中寫下對遊戲的評論 – user1137472 2012-04-06 18:33:46

+0

更改'db.tblGames'爲'IEnumerable'而不是'ICollection',看看是否有所作爲。 – 2012-04-06 21:25:32

相關問題