0

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スクリプトを書くことは「少しハッキー」です.)
適切な方法はありますか?

4

1 に答える 1