我有5个下拉菜单,基本上显示“选择”,“是”和“否”。最初它们设置为“选择”。一旦用户选择了某些内容,我就会将数据存储在cookie中(使用Jquery)并最终将其传递给ViewModel,以便我可以在Controller中使用它。
当用户刷新页面时,我希望使用ViewModel中的值再次填充这些下拉列表。
目前我有以下代码: -
在视图中我有
<%: Html.DropDownList("FirstQuestYesNo", ViewData["FirstQuestYesNoData"] as SelectList, new { @class = "normalDropdowns" })%>
在我的控制器中我有以下内容: -
var ddlYesNoData = new SelectList(new[]
{
new {ID="",Name=@Resources.GeneralTerms.GeneralTerms_Select},
new {ID="Yes",Name=@Resources.GeneralTerms.GeneralTerms_Yes},
new{ID="No",Name=@Resources.GeneralTerms.GeneralTerms_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 :(得分:0)
在您的控制器操作中,只需将FirstQuestYesNo
属性设置为相应的值即可。例如:
ViewData["FirstQuestYesNo"] = "Yes"; // this value might come from a cookie
这将自动预选value="Yes"
选项。显然,这个值将来自cookie。您不需要任何foreach
循环。