2

MVC4には、ブール値を表し、チェックボックスとしてレンダリングされるEditorForフィールドがあります。チェックボックスがオンになっている場合、他のEditorForフィールドを編集不可に変更したいと思います。これは単純なhtmlでは簡単ですが、かみそりの構文ではこれを行う方法がわかりません。

<div class="editor-field">
        @Html.EditorFor(model => model.Draw)
        @Html.ValidationMessageFor(model => model.Draw)
    </div>

<script type="text/javascript">
function validate() {
    if (document.getElementById('@Html.EditorFor(model => model.Draw)').checked) {
        alert("checked")
    } else {
        alert("You didn't check it! Let me check it for you.")
    }
}

そのスクリプトでテストしようとしていましたが、エディターのIDがわからないため、どうすればよいかわかりません。

4

2 に答える 2

5

EditorFor(汎用ヘルパー)の代わりにCheckBoxForを使用すると、メソッドのオーバーロードを介してHTML属性を簡単に追加できます。IDを追加すると、JavaScriptからIDにアクセスできます。

<div class="editor-field">
    @Html.CheckBoxFor(model => model.Draw, new { ID = "cbxDraw" })
    @Html.ValidationMessageFor(model => model.Draw)
</div>

<script type="text/javascript">
$(document).ready(function() {
    $('#cbxDraw').on('change', function() {
        var $cbx = $(this),
            isChecked = $cbx.is(':checked');

        $cbx.closest('.editor-field')
            .siblings()
            .find(':input')
                .prop('disabled', isChecked);
    });
});
</script>

(注:この例ではjQueryを使用しています)

于 2013-01-31T13:52:36.823 に答える
5

ASP.NET MVC 4には、メソッドNameExtensionsを提供する新しいクラスがあります。次のように使用できます。IdForNameFor

document.getElementById('@Html.IdFor(model => model.Draw)')
于 2013-01-31T13:43:01.597 に答える