1

注文の配送タイプをSelectList表します。

配信タイプ参照データには通常のコード/説明がありますが、選択したタイプについてさらに情報を入力する必要があるかどうかを示す追加のブールプロパティもあります。

したがって、緊急配達の場合、追加のデータが必要です。緊急事態が選択された場合、追加のデータ入力フィールドは表示され、それ以外の場合は非表示に設定されます

私には、3つのプロパティを含むがViewModel含まれ<List>ReferenceDeliveryTypesています。SelectListItemsViewModelデータから作成しました

@Html.DropDownListFor(model => model.DeliveryTypeCode, 
    new SelectList(Model.ReferenceDeliveryTypes as System.Collections.IEnumerable, 
        "DeliveryTypeCode", "DeliveryTypeDescription"), new { id = "ddlDeliveryType" })

配信タイプの変更時にjQuery関数を呼び出し、選択したコードを渡し、Model.ReferenceDeliveryTypesそのコードをチェックして、追加のデータプロパティがtrue / falseであるかどうかを確認し、追加のフィールドを表示/非表示にするにはどうすればよいdivですか?

値を渡すために呼び出されたjQuery関数を取得することができました。

$(function () {

$('#ddlDeliveryType').change(function () {
    var value = $(this).val();
    alert(value);
});

});

4

2 に答える 2

1

Model.ReferenceDeliveryTypesをJSONリストに変換して、jQueryからアクセスできるようにしました。

おそらく最善の方法ではありませんが、AJAXコールバックを行うのではなく、クライアントですべてを実行できます。ifブロックの内側を表示/非表示にできるようになりました。

これまでに出会ったことがないので、私が行ったことを文書化する価値があると思いました@Html.Raw(Json.Encode。jQuery内からモデルデータにアクセスしたい人にとっては役立つかもしれません。

追加のコメントを歓迎します。

        <script type="text/javascript">
            var ReferenceDeliveryTypeJsonList=@Html.Raw(Json.Encode(Model.ReferenceDeliveryTypes))
        </script>



        @Html.DropDownListFor(model => model.DeliveryTypeCode,
                new SelectList(Model.ReferenceDeliveryTypes.ReferenceDeliveryType as System.Collections.IEnumerable,
                "DeliveryTypeCode", "DeliveryTypeDescription"), new { id = "ddlDeliveryType" })



$(function () {

    $('#ddlDeliveryType').change(function () {

        var selectedDT= $(this).val();

        $.each(ReferenceDeliveryTypeJsonList, function (index, item) {

            if (selectedDT === item.DeliveryTypeCode) {
                alert("match " + selectedDT);
            }

        });

    });
});
于 2013-01-14T14:06:16.173 に答える
1

選択リストを使用してこれを行う方法はわかりませんが、次のオプションをお勧めします。

  • シンプルだがハック - DeliveryTypeDescription の最後に文字列を追加します(緊急配送)など、変更機能でそれを確認します
  • 別のハック - DeliveryTypeCode を 10 倍し、緊急配達の場合は 1 を加算します (そして、変更関数で mod 10 を使用します)。
  • Ajax ルックアップ関数を使用する
  • 緊急配信が必要なコードを含む JavaScript ルックアップ テーブルを読み込む
  • 適切なセパレーターを含む緊急コードの文字列リストを含むフォームの非表示フィールドを使用します

幸運を

123|456|789|UPDATE 次のようなものを使用し、選択した ID にindexOfa を追加して使用する場合の非表示フィールド オプション。|

于 2013-01-14T12:53:50.940 に答える