ASP.NET MVC3 を使用しています。4 つの値を持つ DropDownList を作成する必要があります。
- 気にしないで
- 0
- 1
- 2 または +
選択項目として「気にしないでください」。
これが私のコードです:
public static IEnumerable<SelectListItem> ListAnimals()
{
List<SelectListItem> items = new List<SelectListItem>();
items.Add(new SelectListItem { Text = "Don't mind", Value = "-1", Selected = true });
items.Add(new SelectListItem { Text = "0", Value = "0" });
items.Add(new SelectListItem { Text = "1", Value = "1" });
items.Add(new SelectListItem { Text = "2 or +", Value = "2" });
return items;
}
そして、私はそれを私の見解で次のように使用します:
@Html.DropDownListFor(m => m.AnimalNumber, new SelectList(Animal.ListAnimals() , "Value", "Text"))
このコードでは、選択されたアイテムは常に「0」ですが、明示的に書いているので「気にしないでください」のはずです。しかし
、いつ :items.Add(new SelectListItem { Text = "0", Value = "0" });
になった :items.Add(new SelectListItem { Text = "0", Value = "[Anything but 0]" });
完全に機能し、「気にしない」が正しく選択されています。
Value = "0"
だから、キーワードにもかかわらず、MVCは自動的に項目 where を選択すると思いますSelected
...どうすればそれをオーバーライドできますか? 本当に let する必要がありValue = "0"
、この動作をオーバーライドできると確信しています。誰かが方法を知っていますか?
(ところで、私の質問がこれに非常に近いことは知っていますが、このスレッドで与えられた回答は私を満足させません。私の値と私のモデルの間のバインディングを失うので、HTMLでDDLを書きたくありません、そして選択された値を変更するためのjQueryスクリプトを書くことは「少しハッキー」です.)
適切な方法はありますか?