2017-01-27 1 views
0

フォームに3つのドロップダウンがあり、ユーザーが選択したデータを失わないようにするために、リフレッシュしたり、他のページに移動して戻ったりしています。クッキーから選択した値を設定する

これは私が3つのドロップダウンを持っている私の見解である:

enter image description here

私は、ユーザーが選択したデータを格納するためにクッキーを使用します。ここでは

@using (Ajax.BeginForm("SearchForCars", "Home", null, new AjaxOptions { UpdateTargetId = "DivCategoriesTree", OnSuccess = "success", HttpMethod = "Post" }, new { make = "makes" })) 
      { 
       <div> 
        <div class="col-sm-4" style="height: 10em;display: flex;align-items: center ; padding-top:25px;"> 
         <i class="fa fa-car" style="font-size:60px;color:red; padding-left:20px;"></i> 
         <strong style="padding-left:20px;">Vă rugăm să selectați vehiculul dumneavoastră!</strong> 
        </div> 

        <div class="col-sm-4"> 
         <div style="padding-top:15px;"> 
          <form class="form-control-static"> 
           <div class="form-group"> 
             <div class="row"> 
             <div class="col-sm-10"> 
              @if (ViewData.ContainsKey("makes")) 
              { 
               @Html.DropDownList("makes", ViewData["makes"] as List<SelectListItem>, "--Select car--", new { @class = "dropdown-toggle form-control" }) 
              } 
             </div> 
            </div> 
            <div class="row"> 
             <div class="col-sm-10"> 
              <p></p> 
              @Html.DropDownList("models", new SelectList(string.Empty, "Value", "Text"), "--Select model--", new { @class = "dropdown-toggle form-control" }) 
             </div> 
            </div> 
            <div class="row"> 
             <p></p> 
             <div class="col-sm-10"> 
              @Html.DropDownList("engines", new SelectList(string.Empty, "Value", "Text"), "--Select engine--", new { @class = "dropdown-toggle form-control" }) 
             </div> 
            </div> 
           </div> 

          </form> 

         </div> 
        </div> 

        <div class="col-sm-4" style="height: 10em;display: flex;align-items: center ; padding-top:25px;"> 
         <input type="submit" id="btnSearch" class="btn btn-default active" value="Cauta" disabled="disabled" style="width:150px;" /> 
        </div> 
       </div> 
      } 
     </div> 

は3つのドロップダウンがあります。

私はこのように、コントローラからのドロップダウンリストを設定しようとしました:

public ActionResult Index() 
    { 
     var asa = HttpContext.Request.Cookies.Get("make_model_engine"); 
     var model = asa.Values["model"].ToString(); 
     var make = asa.Values["make"].ToString(); 

     var makeList = new SelectList(makeRepository.GetMakes(), "ID", "Name"); 
     ViewData["makes"] = makeList; 

     **var selected = makeList.Where(x => x.Value == make).First(); 
     selected.Selected = true;** 
     return View(); 

    } 

それが選択した値が正しくクッキーから設定されている、それが動作しないようですが、ドロップダウンが選択された値を表示されません。 私はjavascriptのビューでこれを修正する必要があると思いますが、私はjavascriptを初めて使用しています。このために最も良い修正が何か分かりません。 どうすればこの問題を解決できますか? ありがとうございました!

答えて

0

あなたはSelectList constructorの最後のパラメータとしてクッキーからあなたが読んで選択した値を渡すことができます:

var makeList = new SelectList(makeRepository.GetMakes(), "ID", "Name", make); 
+0

これは、最初のドロップダウン、感謝のために働いています! 2番目と3番目のドロップダウンでは、jqueryからビルドされているため、別の修正が必要です。私はコントローラからそれらに到達することはできません。 – Orsi

+0

jqueryでビルドされている場合は、javascriptで選択した値を設定する必要があります。 –

+0

はい、しかし、私は非常に新しいJavaScriptと私はどのようにjsでそれを行うための最善の方法がわからない。 – Orsi

関連する問題