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循环和另一个之间的计算机改变比特。改变MVC的SelectList选定值
但是,我得到了true, false
。这如何远程可能?使用调试器,我看到'item'被正确解析,并且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");
显示你如何定义'DropDown'。 – YD1m
完成!更新... – Saturnix