0

ユーザーが各画像を保存するかどうかを決定できるチェックボックス付きのいくつかの画像を表示するビューがあります。チェックボックスを非表示にして、代わりに画像の上にチェックマークまたは X を使用して、選択されているかどうかを表します。これはすべて正常に機能しています。ただし、チェックボックスの値は変更されていません。常に選択されていません。

ビュー内の私のコードは次のとおりです。

<div class="imgCheckBoxes">
    <label for="MyImages_Cover" class="imgCheckBox">
        <img src="http://example.com/image.jpg" alt="cover" />
    </label>
    @Html.CheckBoxFor(m => m.MyImages.Cover, new { @class = "check-box hideChkBx chkForImg" })
</div>

次の HTML をレンダリングします。

<div class="imgCheckBoxes">
    <label for="MyImages_Cover" class="imgCheckBox">
        <img src="http://example.com/image.jpg" alt="cover" />
    </label>
    <input class="check-box hideChkBx chkForImg" id="MyImages_Cover"
        name="MyImages.Cover" type="checkbox" value="true" />
    <input name="MyImages.Cover" type="hidden" value="false" />
 </div>

私のjQueryコードは次のとおりです(ポジショニングなどを扱ういくつかのコードを削除しました):

var closeBtn = '../Content/img/close.png';
var okBtn = '../Content/img/ok.png';

$(document).ready(function (e) {
    if ($('.imgCheckBox').html() != null && $('.imgCheckBox').html() != '') {
        initializeOkCloseImg();
    }
    $('.chkForImg').change(function (e) {
        initializeOkCloseImg();
    });
});

function initializeOkCloseImg() {
    var chkImg = '';
    $('.chkForImg').each(function (index, element) {
        chkImg = closeBtn;

        if ($(this).is(':checked')) {
            chkImg = okBtn;
        }
    });
}

チェックされている/チェックされていないことを示す画像を切り替えるという点では、すべてが正しく機能していますが、フォームが投稿されると、チェックボックスは常に false になります。ここで何が欠けていますか?

4

2 に答える 2

0

さて、私はついに問題を理解しました。問題は実際には jQuery ではなく、ビュー モデルにありました。ビューモデル(MyImages.Cover)内でモデルを使用していたため、これは明らかに機能していませんでした。これにより、何らかの理由ですべてが狂ってしまいました。ビューモデルで標準のブール値を使用するだけで、すべてが完全に機能します。理由はわかりませんが、いくつかのページでこのロジックを再利用する必要があり、すべてのビュー モデルで個々のプロパティを定義するのは面倒で不必要に思えるので、ちょっと残念です。もっと簡単な方法があればいいのに!

于 2012-09-13T19:42:40.027 に答える
0

post メソッドで、更新された値でモデルを返しますか (この場合は、checkboxfor の値MyImages.Cover )。

于 2012-09-13T07:15:36.667 に答える