如何为 Html.DropDownListFor 设置默认选择值
How to set default selected value for Html.DropDownListFor
@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")
}
我认为上面的示例应该用区域列表填充下拉列表。一旦某个区域被 selected,我就将该区域设置为 cookie 中的默认区域。
下次他们访问该应用程序时,我正在检索 cookie 值,这样我就可以预先 select 一个区域(在下拉列表中),该区域与我在变量“[=26= 中的 cookie 值相匹配” ]默认区域值”。
我上面的代码的问题是“defaultRegionValue”作为 DataTextField 出现在下拉列表中,但我希望它作为数据文本值。
我不想在变量 "defaultRegionValue" 中显示真实的字符串值,而是希望下拉列表将其读取为 selectedValue,然后显示相应的文本值。
目前是显示值,selected值为空。我该如何正确设置?
下面是我的 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);
}
}
将 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")
}
SelectList
有一个构造函数重载,它在参数中采用选定的值。
您可以像这样创建新的 SelectList:
@Html.DropDownListFor(m => m.SelectedRionName,
new SelectList(Model.RegionList,
"Value",
"Text",
defaultRegionValue))
@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")
}
我认为上面的示例应该用区域列表填充下拉列表。一旦某个区域被 selected,我就将该区域设置为 cookie 中的默认区域。
下次他们访问该应用程序时,我正在检索 cookie 值,这样我就可以预先 select 一个区域(在下拉列表中),该区域与我在变量“[=26= 中的 cookie 值相匹配” ]默认区域值”。
我上面的代码的问题是“defaultRegionValue”作为 DataTextField 出现在下拉列表中,但我希望它作为数据文本值。
我不想在变量 "defaultRegionValue" 中显示真实的字符串值,而是希望下拉列表将其读取为 selectedValue,然后显示相应的文本值。
目前是显示值,selected值为空。我该如何正确设置?
下面是我的 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);
}
}
将 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")
}
SelectList
有一个构造函数重载,它在参数中采用选定的值。
您可以像这样创建新的 SelectList:
@Html.DropDownListFor(m => m.SelectedRionName,
new SelectList(Model.RegionList,
"Value",
"Text",
defaultRegionValue))