2010-12-03 6 views
0

ASP.NETアプリケーションを開発する方法を学び始めたばかりですが、チェックボックスを作成する方法については困惑しています。チェックボックス。チェックボックスは、利用者が利用規約に同意したことを確認するためのものです。フォーム提出時にエラーが返された場合は、エラーメッセージを画面に表示し、チェックボックスにチェックを入れずにチェックを外したままにします。ASP.NET:チェックボックスをチェックすると、投稿後も常にチェックが外される

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

そして私は私のコントローラと、それらのどれに次の両方試してみました動作します:

ViewData["UserAgreement"] = false; 

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

誰もが何を達成するためにどのように助けることができる私は、次のしている私の見解で

私は欲しい?ありがとうございました。

答えて

0

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

上記のコードでは、ビューが返されたときに 'UserAgreement'がチェックされている必要があります(値はTRUE)。

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

+0

こんにちはネイサンは、申し訳ありません私は私が修正した私の記事でミスを犯しました。私は値としてfalseを割り当てることを意味しました。また、提出する前にチェックを入れてもチェックボックスがオンになっています。私がチェックボックスに行うことは、提出後も保持されます。それは私が欲しいものではありません...私は、チェックボックスがチェックされているかどうかにかかわらず、チェックボックスをチェックしないようにしたいと思います。 – user152235

0

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

+0

こんにちはカイル、どうすればいいですか?私は最後のコード行がそれをしたと思いましたか? – user152235

0

Try ModelState.Remove("UserAgreement");ビューを返す前に。

1

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

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

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

    return View(viewName, model); 
} 
関連する問題