2012-10-15 37 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

相关问题