1

現在、支払いフォームの利用規約のチェックボックスを検証しようとしています。これにより、利用規約のチェックボックスがオンになるまでフォームが送信されません。

私が作成している特定のフォームは、IE6 を使用するクライアントのグループによってのみ使用されます (したがって、JQuery を使用して検証することはできません)。

利用規約の bool モデル値を必要なデータ注釈で装飾しましたが、必要なエラー メッセージは表示されません (string、decimal、int などを使用する他の値とは異なります。

このコードを使用してエラーを表示することができました:

if (ModelState.IsValid && model.TermsAndConditions)
            {
                ConnectAndRedirectoToProtx(model);
            }
            else
            {
                //store locally and sort later
                TempData["message"] = "You must first read through and agree to the terms and conditions";
            }

このコードは、コントローラーの HttpPost インデックス ActionResult にあります。次に、ビューで次のようにレンダリングします。

div style="color: red;font-weight:bold;">@TempData["message"]</div>

このcpdeを使用する際の問題は、他のすべてのフィールドが正しい場合にのみ表示されることです.JQueryを使用せずに、送信ボタンをクリックした直後に表示される他のエラーメッセージとともにこのエラーメッセージを表示することは可能ですか?

4

1 に答える 1

1

チェックボックスをオフにしてもモデルに false の値が渡されるため、必要なデータ注釈タグはこのケースでは機能しません。JQuery がサポートされていない場合は、Java Script を使用できます (これもブラウザーによってブロックされるまで)。ヘルプについては、次のリンクにアクセスしてください。

http://www.w3schools.com/js/js_form_validation.asp

さらに、次のようにコントローラー機能を変更して、この場合にのみエラーを追跡できます

if(!model.TermsAndConditions)
{
    TempData["message"] = "You must first read through and agree to the terms and conditions";
}

if (ModelState.IsValid)
        {
            ConnectAndRedirectoToProtx(model);
        }
        else
        {
            //store locally and sort later
            TempData["message"] = "Invalid Model or some other error message......";
        }
于 2012-12-20T11:42:15.250 に答える