2012-04-07 106 views
0

我不知道是否它的方式是措辭我的問題,但我想要的是一種方式,當用戶在下拉菜單中選擇一個選項,然後按下提交下拉的值被選中不在那裏展示。我曾嘗試以下:選擇後刪除DropDownList值

<div class="editor-field"> 
       @Html.DropDownList("GameIDFK", String.Empty) 
       @Html.ValidationMessageFor(model => ViewBag.GameIDFK) 
      </div> 


    [HttpPost] 
    public ActionResult Create(tblReview tblreview, FormCollection formCollection) 
     { 
       if (ModelState.IsValid) 
       { 

        db.tblReviews.Add(tblreview); 
        db.SaveChanges(); 
        // return RedirectToAction("Index"); 
       } 
       int gameid=Convert.ToInt32(formCollection["GameIDFK"]); 
       var userGames = (from g in db.tblGames where g.UserName== User.Identity.Name && g.GameID!=gameid select g).ToList(); 
       ViewBag.GameIDFK = new SelectList(userGames, "GameID", "GameName"); 
       return View(new tblReview { UserName = @User.Identity.Name }); 
    } 

這只是刪除一個值,而另一個選擇當透水一個回來,還當我刷新頁面的所有值返回。

我也曾嘗試以下操作:

<script type="text/javascript"> 
    $(function() { 
     $('#GameIDFK').change(function() { 
      $('option:selected', this).remove(); 
     }); 
    }); 
</script> 

這樣做是當我點擊它完全以vanishs值,當我刷新值回來。

我正在使用MVC3 C#,想要一種方式,當用戶選擇一個遊戲例如GTAIV並按下提交值從下拉GTAIV即使當我refreash,或註銷並再次登錄我希望下拉菜單中的值從下拉菜單中消失,但我不想將其從數據庫中刪除,只需要按下提交按鈕後下拉菜單中的選定值即可。

我的控制器:

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

namespace Game.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() 
     { 
      var userGames = db.tblGames.Where(g => g.UserName == User.Identity.Name); 
      ViewBag.GameIDFK = new SelectList(userGames, "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"); 
      } 

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

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

我的模型:

namespace Game.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; } 
    } 
} 

筆者認爲:

@model Game.tblReview 

@{ 
    ViewBag.Title = "Create"; 
} 

<h2>Create</h2> 

<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script> 

@using (Html.BeginForm()) { 
    @Html.ValidationSummary(true) 
    <fieldset> 
     <legend>tblReview</legend> 

     <div class="editor-label"> 
      @Html.LabelFor(model => model.ReviewID) 
     </div> 
     <div class="editor-field"> 
      @Html.EditorFor(model => model.ReviewID) 
      @Html.ValidationMessageFor(model => model.ReviewID) 
     </div> 

     <div class="editor-label"> 
      @Html.LabelFor(model => model.Recomendation) 
     </div> 
     <div class="editor-field"> 
      @Html.EditorFor(model => model.Recomendation) 
      @Html.ValidationMessageFor(model => model.Recomendation) 
     </div> 

     <div class="editor-label"> 
      @Html.LabelFor(model => model.AvoidOrBuy) 
     </div> 
     <div class="editor-field"> 
      @Html.EditorFor(model => model.AvoidOrBuy) 
      @Html.ValidationMessageFor(model => model.AvoidOrBuy) 
     </div> 

     <div class="editor-label"> 
      @Html.LabelFor(model => model.Score) 
     </div> 
     <div class="editor-field"> 
      @Html.EditorFor(model => model.Score) 
      @Html.ValidationMessageFor(model => model.Score) 
     </div> 

     <div class="editor-label"> 
      @Html.LabelFor(model => model.GameIDFK, "tblGame") 
     </div> 
     <div class="editor-field"> 
      @Html.DropDownList("GameIDFK", String.Empty) 
      @Html.ValidationMessageFor(model => model.GameIDFK) 

     </div> 

     <div class="editor-label"> 
      @Html.LabelFor(model => model.UserName) 
     </div> 
     <div class="editor-field"> 
      @Html.EditorFor(model => model.UserName) 
      @Html.ValidationMessageFor(model => model.UserName) 
     </div> 

     <p> 
      <input type="submit" value="Create" /> 
     </p> 
    </fieldset> 
} 

<div> 
    @Html.ActionLink("Back to List", "Index") 
</div> 

我一直在這幾個星期的都沒有結果,請幫我謝謝

回答

0

我分析過你r問題,似乎你將不得不做出一些持久性機制來記住用戶的選擇。例如,用戶刪除GTA IV,那麼你必須有下載元素的modyfi數據庫和商店ID,用戶ID和布爾IsVisible。在刷新時,您將不得不下載這兩個列表並顯示可見的元素。

有了這種數據我不知道哪種持久性實施會更好。您需要分析您的用戶故事,也許您可​​以在Cookie中存儲此「可見性」選項。這取決於您的功能和要求。

編輯:

試試這個

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

這已無關,與我要求的一切我想要的是一種方式,其中一次提交按鈕來選擇要清除在下拉值。就這些。我不希望一旦我放棄或曾經參與過這個頁面,這個價值就會消失。我只想要一旦選定的值,並按下輸入按鈕 – user1137472 2012-04-07 18:25:04

+0

好吧,那麼你必須從下拉回發選定的值,當你創建ViewBag.GameIDFK使用何處從列表中排除此值。您可以通過隱藏輸入文本和操作方法中的另一個參數來實現此目的。 – 2012-04-07 18:33:07

+0

可以請你提供一些代碼謝謝因爲我提供了一些嘗試,如果你知道如何做到這一點,那麼我會很感激,如果你能告訴我謝謝 – user1137472 2012-04-07 18:36:46