ASP.Net MVC コードのバグを調べるように依頼されましたが、(私にとって) SelectList に非常に奇妙な問題があります。
項目を生成するコントローラーからのコード (SelectList を返すメソッド、合計 5 つあります)。その後、各 SelectList は ViewData コレクションに保存されます。
List<SelectListItem> items = new List<SelectListItem>();
string yesText = "Yes";
string noText = "No";
if (ci.LCID.Equals((int)LanguageCodes.FRANCE))
{
yesText = "Oui";
noText = "Non";
}
SelectListItem yesItem = new SelectListItem();
yesItem.Text = yesText;
yesItem.Value = ((int)MarketingBy.Yes).ToString();
yesItem.Selected = selectedValue != null && selectedValue.Equals(int.Parse(yesItem.Value));
SelectListItem noItem = new SelectListItem();
noItem.Text = noText;
noItem.Value = ((int)MarketingBy.No).ToString();
noItem.Selected = selectedValue != null && selectedValue.Equals(int.Parse(noItem.Value));
items.Add(yesItem);
items.Add(noItem);
return new SelectList(items, "Value", "Text", yesItem.Selected ? yesItem.Value : noItem.Value);
作成時点での簡単な「クイックウォッチ」は、すべて問題がないことを示しています。
ビューがレンダリングされている時点では、値はまだ正常に見えます。ただし、ビューが読み込まれると、リストの最初の項目が常に選択されます。生成される HTML は次のとおりです。
<tr>
<td>Fax</td>
<td>
<select id="MarketingByFax" name="MarketingByFax">
<option value="134300002">Yes</option>
<option value="134300001">No</option>
</select>
</td>
</tr>
(明確にするために他の値は省略されています)。
何か案は?それとも研究の道?著者は、これが「先週まで」機能していたことを断言しています (どちらの方法もわかりません)。
編集:ビューのコード -
<td><%: Html.DropDownList("MarketingByFax", (SelectList)ViewData["MarketingByFaxList"])%></td>