Html.Checkbox
拡張メソッドを使用して作成されたチェックボックスには、この厄介な問題があります。どうやらポストバックの場合、チェックボックスの状態は保存されません (フォーム検証エラーのため)。MVC コード自体を詳しく調べたところ ( System.Web.Mvc.Html.InputExtensions
)、「checked」プロパティは を呼び出すことによって決定されることがわかりましたhtmlHelper.EvalBoolean(name)
。
このメソッドは、ViewData 自体のキー (name 引数で指定) を探します。問題は、チェックボックスの値が実際には ModelState にあることです。を呼び出す
htmlHelper.GetModelStateValue(name, typeof(bool))
と、期待される結果が返されます。
これはチェックボックスの実装の欠陥ですか?