1

これが私の単純なクラスです:

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using XXX.Domain;

namespace XXX.WebUI.Models
{
    public class AccountRegisterModel
    {
        ..snip..

        [Required(ErrorMessage = "You must agree to our terms of use.")]
        public bool AcceptedTerms { get; set; }

        ..snip..
    }
}

そして私の見解:

<div class="terms">
    <input type="checkbox" name="AcceptedTerms" value="AcceptedTerms"  />
    <img class="sim" src="@Url.Content("~/Public/images/unchecked.gif")" alt="accept the terms" />
    <p>I accept the <span class="legalize">Terms of Service &amp; Privacy Policy</span> and wish to continue</p>
</div>

ビューはチェックボックスがチェックされていない状態で始まり、いくつかのJavascriptコードを使用して、画像を使用しておしゃれなチェックボックスを作成し、バックグラウンドでチェックボックスを更新して、正しい値がポストバックされるようにします。

$('.terms input[type="checkbox"]').prop("checked", true);

デバッグの目的でdisplay:block、「非表示」の実際のチェックボックスにルールを追加して、画像をクリックしたときに実際にチェックがオンになっているかどうかを確認しました。これが事実であることを確認できます。

また、Firebug を使用して、画像をクリックしてチェックボックスをオンにしたときに表示される HTML を次に示します。

<input type="checkbox" name="AcceptedTerms" value="AcceptedTerms">

フォームが投稿されると、AcceptedTerms の値は、値がサーバーに投稿されていないかのように、false のままです。HTML に、私が認識していない属性が欠落している可能性があります。

アイデアや提案はありますか?

4

2 に答える 2

0
<input type="checkbox" name="AcceptedTerms" value="AcceptedTerms"  />

に変更する必要があります

<input type="checkbox" name="AcceptedTerms" value="true"  />

値は AcceptedTerm ではなく true である必要があります。

@Html.CheckBoxFor(x => x.AcceptedTerm) を使用する場合

値が true に設定されていることがわかります。

于 2012-04-11T06:05:41.327 に答える
0

値を保持するには、チェックボックスをビュー モデルにバインドする必要があります。私は次のようにします:

@Html.CheckBoxFor(x => x.AcceptedTerms)

フォームが投稿されると、チェックボックスの値が必要です。チェックされているか (true)、チェックされていないか (false)。

于 2012-04-11T09:07:02.597 に答える