2012-04-06 41 views
1

嗨,我有一個小問題可能是一個難題我試圖做到這一點與我的審查控制器的索引段中的以下代碼:無法對用戶發帖進行刪除/更新/編輯

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 }); 

我的問題是我試圖讓人們寫遊戲評論,AV得到了它,使得張貼的所有用戶遊戲是獨一無二的,遊戲只有通過自己的帳戶才能看到,但是當涉及到編輯/刪除/ u pdating我不能得到它,以便用戶發佈遊戲審查只能刪除/更新/編輯自己的遊戲,而不是其他用戶。

例如,我有兩個名爲sham和bam的用戶,每個用戶都可以看到他們發佈在評論頁面上的遊戲,但是當涉及到編輯/更新和刪除評論時,用戶刪除/編輯和更新彼此的職位。

這是我的檢討控制器:

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); 
     } 
    } 
} 

如果你需要更多信息,請讓我知道感謝

大加讚賞

回答

1

這很難回答這個問題,而不能看到你的數據結構,但我會盡力幫助。

我可以在您的Index()行動中看到您獲取用戶名以檢索遊戲。所以,看起來你的評論對象存儲了一些對創建它的用戶的引用。

因此,在更新/刪除時,只需再次檢索用戶名,如果與檢查對象上的用戶名不匹配,則不要執行該操作。

public ActionResult Edit(int id) 
    { 
     //See if this review id was created by the current user 
     if(!db.tblReviews.Any(UserInfo => UserInfo.UserName.Equals(User.Identity.Name) && UserInfo.Id == id)) 
     { 
      //Redirect the user away from this edit page, they can't edit this one. 
     } 

     tblReview tblreview = db.tblReviews.Find(id); 
     ViewBag.GameIDFK = new SelectList(db.tblGames, "GameID", "GameName", tblreview.GameIDFK); 
     return View(tblreview); 
    } 
+0

你可以挑釁一些代碼嗎? – user1137472 2012-04-06 17:08:54

+0

已添加源代碼。 – SouthShoreAK 2012-04-06 17:37:40

相關問題