2012-04-07 1 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 }); 
    } 

이것은 단지 하나 개의 값을 제거하고 다른이를 선택하면 통과시키는 하나의 내가 모든 값이 반환 페이지를 새로 고침 또한 때, 다시 온다 : 나는 다음과 같은 노력했다. 내가 그것을 totaly vanishs 값을 클릭하고 내가 새로 고칠 때 값이 돌아 오면

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

어떤이가하는 것은 :

은 또한 다음과 같은 노력했다.

MVC3 C#을 사용하고 있는데 사용자가 예를 들어 GTAIV와 같은 게임을 선택하고 드롭 다운 GTAIV에서 값을 제출하여 내가 다시 홍역을 치거나 로그 아웃했다가 다시 로그인하는 경우를 원합니다. 드롭 다운 값을 드롭 다운에서 사라지게하고 싶습니다만 데이터베이스에서 삭제하고 싶지 않습니다. 드롭 다운에서 선택된 값을 전송 버튼을 누르기 만하면됩니다.

내 컨트롤러 :

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를 삭제 한 경우 드롭 다운 요소의 ID와 ID를 modyfi해야하며 사용자 ID와 부울 IsVisible도 있어야합니다. 새로 고침시 두 목록을 모두 다운로드하고 표시되는 요소를 표시해야합니다.

이러한 종류의 데이터로 어떤 지속성 구현이 더 좋을지 모르겠다. 어쩌면 쿠키에이 "Visibility"선택 사항을 저장할 수있는 사용자 스토리를 분석해야합니다. 귀하의 기능과 요구 사항에 따라 다릅니다.

편집 :

는 내가 원하는 모든 요구하고있다과 아무 상관이

[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

가 제출 버튼을 선택하면 드롭 다운의 값이 클리어 할 수있는 방법입니다 시도 . 그게 전부입니다. 나는 일단 로그 아웃하거나 일단 페이지를 refeashed 가치 reapearing 싶지 않아. 값을 일단 선택하고 Enter 버튼을 누르기 만하면됩니다. – user1137472

+0

그렇다면 드롭 다운에서 선택한 값을 다시 게시하고 ViewBag.GameIDFK를 만들 때이 값을 목록에서 제외 할 위치를 사용해야합니다. 숨겨진 입력 텍스트와 action 메소드의 또 다른 매개 변수 형태로이 작업을 수행 할 수 있습니다. –

+0

몇 가지 코드를 제공해 주셔서 감사합니다. 시도를 제공 했으므로이 방법을 알고 있다면 감사 할 수 있으면 감사 할 것입니다. – user1137472