0

これを理解する悪夢を見て、私は今、レンガの壁に平らになっています

MVC フレームワークを使用して、基本的に単純なフォームを構築しています。ビューをできるだけシンプルに保ち、editorForModel() だけを使用しています。

したがって、このフォーム モデル内では、データ注釈を使用して、プロパティにさらにカスタマイズを追加しています。別のプロパティの値に基づいて配置されたプロパティを非表示にするカスタム データ注釈を作成したいと思います。

例えば

はいまたはいいえのドロップダウンがあります。

そして名前欄。ドロップダウンが「いいえ」の場合、フォームの名前フィールドが非表示になります。

私は JS でこれを実現できますが、これをモデルの単純なデータ注釈として持つとよいでしょう。

例 [HideField("ドロップダウン", "いいえ")]

前もって感謝します

4

1 に答える 1

0

サーバー側ではなく、クライアント側でこれを処理する必要があります (属性を使用)。

すでに jQuery を使用している場合は、次のようになります。これがjsFiddleです。

$(function () {
    var dropdown = $('#dropdown').change(function (event) {
        if ($(this).val() == "no") {
            $('#fieldToHide').hide();
        } else {
            $('#fieldToHide').show();
        }
    });
});

クライアント側でそれを行う理由は非常に単純です。他の方法では、値を確認するためにドロップダウンを変更するたびにポストバックが必要になります..

**編集**コメントから:

この JavaScript をページに挿入することは可能ですか... ...本質的に同じスクリプトを各ページに複製するのではなく

これは、もう少し汎用的に書き直して、別のページで再利用することができます。それを yoursite.js (既にあるはずです..) に追加し、必要に応じて各ページに接続します。jsFiddleを更新しました。

Site.JS

function hideIf(selectField, hideField, hideValue) {
    $(selectField).change(function (event) {
        if ($(this).val() == hideValue) {
            $(hideField).hide();
        } else {
            $(hideField).show();
        }
    });
}

そして、それを使用する各ページで、次のように接続します。

$(function () {
    hideIf("#dropdown", "#fieldToHide", "no");
});

このようにして、上記のスクリプトを書き直すことなく、異なる選択フィールドで hideIf を複数回呼び出すことができます。

于 2015-05-28T17:07:07.757 に答える