0

ASP.NETアプリケーションの開発方法を学び始めたばかりですが、ユーザーがチェックボックスをオンにしたフォーム送信後でも、チェックボックスを常にオフにする方法に戸惑っています。チェックボックスは、ユーザーが利用規約に同意したことを確認するためのものです...フォーム送信でエラーが返されたときに、画面にエラーメッセージを表示し、チェックボックスがオンになっているかどうかに関係なく、チェックボックスをオフのままにします。

私の見解では、私は次のことを持っています:

<%: Html.CheckBoxFor(m => m.UserAgreement) %>

そして、コントローラーで次の両方を試しましたが、どれも機能しません。

ViewData["UserAgreement"] = false;

return View(new MyModel { UserAgreement = false});

私が必要とするものを達成する方法について誰でも助けることができますか? ありがとうございました。

4

4 に答える 4

1

これは私も長い間悩まされていました。モデルの値を明示的に false に設定しても、この問題は実際には解決されませんでした。私が見つけたのは、ModelState コレクションの値もチェックしていたことです。

これはおそらく最もクリーンなソリューションではありませんが、これが最終的に私にとってうまくいったものです:

private ActionResult DisplayView(string viewName, MyModelClass model)
{
    model.AgreeTerms = false;
    ModelState.Remove("AgreeTerms");

    return View(viewName, model);
}
于 2012-10-30T22:13:47.673 に答える
0

ASP.NET MVC CheckBox は、明示的に指示しない限り、その状態を保持しません。

上記のコードは、ビューが返されたときに「UserAgreement」をチェックする必要がある (値は TRUE) ことを示しており、チェックを外す必要はありません。

ユーザーにビューを返す前に UserAgreement の値を特に「true」に設定しない限り、チェックボックスはオフになります。同様に、UserAgreement プロパティが「true」に設定されたモデルをアクションが受け取り、それをビューに返す前に「false」に戻さない場合、チェックボックスはオンのままになります。

于 2010-12-03T01:04:07.267 に答える
0

あなたの値は ModelState プロパティに保存されています。投稿後に値をリセットするため。ModelState プロパティの値をクリアする必要があります

于 2010-12-03T01:18:42.010 に答える
0

ModelState.Remove("UserAgreement");ビューを返す前に試してください。

于 2012-01-10T06:01:10.047 に答える