2012-10-15 34 views
0

我有5個下拉菜單,基本上顯示「選擇」,「是」和「否」。最初他們被設置爲「選擇」。一旦用戶選擇了一些東西,我將數據存儲在一個cookie中(使用Jquery),並最終將其傳遞給ViewModel,以便我可以在Controller中使用它。在控制器視圖中設置下拉列表的選擇值

當用戶刷新頁面時,我希望這些下拉列表再次使用ViewModel中的值填充。

此刻,我有以下代碼: -

裏面查看我

<%: Html.DropDownList("FirstQuestYesNo", ViewData["FirstQuestYesNoData"] as SelectList, new { @class = "normalDropdowns" })%> 

,並在我的控制器我有以下幾點: -

  var ddlYesNoData = new SelectList(new[] 
             { 
              new {ID="",[email protected]_Select}, 
              new {ID="Yes",[email protected]_Yes}, 
              new{ID="No",[email protected]_No}, 
             }, 
     "ID", "Name", 1); 


     //Refresh the YesNo dropdown with the correct vals 
     Dictionary<string, string> YesNoData = new Dictionary<string, string>(); 
     YesNoData.Add("FirstQuestYesNoData", viewModel.FirstQuestYesNoValue); 
     YesNoData.Add("SecondQuestYesNoData", viewModel.SecondQuestYesNoValue); 
     YesNoData.Add("ThirdQuestYesNoData", viewModel.ThirdQuestYesNoValue); 
     YesNoData.Add("FourthQuestYesNoData", viewModel.FourthQuestYesNoValue); 
     YesNoData.Add("FifthQuestYesNoData", viewModel.FifthQuestYesNoValue); 

     foreach (var item in YesNoData) 
     { 
      ViewData[item.Key] = ddlYesNoData; 
      if (item.Value != null) 
      { 
       var selected = ddlYesNoData.Where(x => x.Value == item.Value).First(); 
       selected.Selected = true; 
      } 
     } 

所以基本上什麼我正在做的是從viewModel獲取每個下拉列表的值,然後嘗試在View中設置該值。由於我正在做的,我得到所有的DropdownLists選項作爲「選擇」,而不是我的viewModel內的值。

問題是我不知道如何「定位」特定的DropDownList。我如何使用我的代碼來控制Controller的DropDown(在本例中爲「FirstQuestYesNo」)?

感謝您的幫助和時間。

回答

0

在您的控制器操作中,只需將FirstQuestYesNo屬性設置爲相應的值即可。例如:

ViewData["FirstQuestYesNo"] = "Yes"; // this value might come from a cookie 

這會自動預選選項value="Yes"。顯然這個值將來自cookie。你不需要任何foreach循環。

+0

噢,好容易!我怎麼能看不到!謝謝Darin! – Johann

相關問題