0

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

このメソッドは、ViewData 自体のキー (name 引数で指定) を探します。問題は、チェックボックスの値が実際には ModelState にあることです。を呼び出す htmlHelper.GetModelStateValue(name, typeof(bool))と、期待される結果が返されます。

これはチェックボックスの実装の欠陥ですか?

4

3 に答える 3

1

この問題はcodeplexに投稿されており、MVC RTM で修正/サポートされる予定です。それまでの間、これは良い回避策です。

于 2009-02-11T21:34:47.517 に答える
1

ここに別の回避策を投稿しました:

ASP.NET MVC で Html.CheckBox() の状態を維持する方法

于 2009-02-22T17:46:34.720 に答える