国を含むXMLファイルからSelectlist(IEnumerable)を生成し、これをDropDownListForで使用すると、Modelで指定された選択値が設定されません??Html.DropDownListForが正しい値を選択しません
@Html.DropDownListFor(model => model.Country, new SelectList(CommonHelpers.CountrySelectList(), "Value", "Text", Model.Country), "---Select---")
と
@Html.DropDownListFor(model => model.Country, CommonHelpers.CountrySelectList(), "---Select---")
任意のidears:
public static IEnumerable<SelectListItem> CountrySelectList()
{
var sRetVal = new List<SelectListItem>();
string CachKey = "MVCXMLCountryList" + GetCulture();
if (HttpContext.Current.Cache[CachKey] == null | 1 == 1)
{
string xmlFile = Path.Combine(HttpContext.Current.Server.MapPath("~"), "Countries.xml");
XmlDocument Doc = new XmlDocument();
Doc.Load(xmlFile);
foreach (XmlNode Node in Doc.SelectNodes(String.Format("//Countries/language[@iso=\"{0}\"]/country", GetCulture())))
{
var tmpSelect = new SelectListItem();
tmpSelect.Value = Node.Attributes["iso2"].InnerText.ToString();
tmpSelect.Text = Node.Attributes["name"].InnerText;
tmpSelect.Selected = false;
sRetVal.Add(tmpSelect);
}
sRetVal.Sort(CountrySort);
var prioritet = new string[] {"de","fo","se","no","dk"};
switch (GetCulture())
{
case "dk": prioritet = new string[] {"de","fo","se","no","dk"}; break;
default: prioritet = new string[] { "de", "se", "no", "dk", "gb" }; break;
}
foreach (string Country in (string[])prioritet)
{
selectedCountry = Country;
var tmpSel = sRetVal.Find(FindCurrentSelected);
sRetVal.RemoveAt(sRetVal.FindIndex(FindCurrentSelected));
sRetVal.Insert(0, tmpSel);
}
//sRetVal[10].Selected = true;
HttpContext.Current.Cache[CachKey] = sRetVal;
}
else
{
sRetVal = (List<SelectListItem>)HttpContext.Current.Cache[CachKey];
}
return (IEnumerable<SelectListItem>) sRetVal;
}
は両方を試したことがありますか?
Thx。リンクを見ても、私のコードがどこで失敗するのかわかりません。コントローラーからSleectList(SELECTEDセットあり)を供給するためにtrideを持っていますが、まだ動作していませんか? – DTA