SelectList dropdown = DropDown;
foreach (var item in dropdown)
{
var modelValue = property.GetValue(Model.FormModel);
if (String.Equals(item.Value, modelValue))
{
item.Selected = true;
System.Diagnostics.Debug.WriteLine(item.Selected);
}
}
foreach (var item in dropdown)
{
var modelValue = property.GetValue(Model.FormModel);
if (String.Equals(item.Value, modelValue))
{
System.Diagnostics.Debug.WriteLine(item.Selected);
}
}
从逻辑上讲,上面的代码应该不输出任何内容,或者true, true
除非魔法磁场在计算机中的一个 foreach 循环和另一个循环之间改变位。
然而,我明白了true, false
。这怎么可能?使用调试器,我看到“项目”被正确解析并item.Selected = true
在我想要的项目上被正确调用。第二个循环仅用于调试目的。
这就是我构建 DropDown 的方式。我无法触摸此代码,因为返回的下拉列表应该始终是通用的。
var prov = (from country in Service.GetCountries()
select new
{
Id = country.Id.ToString(),
CountryName = Localizator.CountryNames[(CountryCodes)Enum.Parse(typeof(CountryCodes), country.Code)],
}).Distinct().ToList().OrderBy(l => l.CountryName).ToList();
prov.Insert(0, new { Id = String.Empty, CountryName = Localizator.Messages[MessageIndex.LabelSelectAll] });
_customerCountrySelectionList = new SelectList(prov, "Id", "CountryName");