@if (HttpContext.Current.Request.Cookies[MyCookies.SelectedRegion] != null)
{
var defaultRegionValue = HttpContext.Current.Request.Cookies[MyCookies.SelectedRegion].Value;
@Html.DropDownListFor(m => m.SelectedRionName, Model.RegionList, defaultRegionValue)
}
else
{
@Html.DropDownListFor(m => m.SelectedRionName, Model.RegionList, "Select")
}
我在我的视图中有上面的示例,它应该填充一个包含区域列表的Dropdownlist。选择区域后,我将该区域设置为cookie中的默认区域。
下次他们访问应用程序时,我正在检索cookie值,以便我可以预先选择一个区域(在下拉列表中),该区域与变量“ defaultRegionValue ”中的cookie值相匹配。
我上面代码的问题是“ defaultRegionValue ”作为DataTextField出现在下拉列表中,但我想将它作为DataTextValue。
我不想在变量“defaultRegionValue”中显示真实的字符串值,而是希望下拉列表将其读取为selectedValue,然后显示相应的文本值。
此时显示的值和所选值为空。我该如何正确设置?
以下是我的RegionList定义
public SelectList RegionList
{
get
{
Dictionary<string, string> items = this.qryRegionList.ToDictionary(k => k.RegionName, v => v.RegionID);
return new SelectList(items.OrderBy(k => k.Key), myConstants.Value, myConstants.Key);
}
}
答案 0 :(得分:4)
SelectList
有一个构造函数重载,它在参数中选择了值。
您可以像这样创建新的SelectList:
@Html.DropDownListFor(m => m.SelectedRionName,
new SelectList(Model.RegionList,
"Value",
"Text",
defaultRegionValue))
答案 1 :(得分:1)
将SelectedRionName设置为等于您的cookie值,而不是声明defaultRegionValue。
@if (HttpContext.Current.Request.Cookies[MyCookies.SelectedRegion] != null)
{
Model.SelectedRionName = HttpContext.Current.Request.Cookies[MyCookies.SelectedRegion].Value;
@Html.DropDownListFor(m => m.SelectedRionName, Model.RegionList)
}
else
{
@Html.DropDownListFor(m => m.SelectedRionName, Model.RegionList, "Select")
}