2012-04-07 202 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