0

カスケード ドロップダウンを持つビューを持つ MVC アプリがあります。ユーザーが最初のドロップダウンで値を選択した後、2 番目のドロップダウンのデータを取得する次の Ajax 呼び出しがあります。

function GetAutoModel(_manufacturerId) {

    var autoSellerListingId = document.getElementById("AutoSellerListingId").value;

    $.ajax({
        url: "/AutoSellerListing/GetAutoModel/",
        data: { manufacturerId: _manufacturerId, autoSellerListingId: autoSellerListingId },
        cache: false,
        type: "POST",
        success: function (data) {
            var markup = "<option value='0'>-- Select --</option>";
            for (var x = 0; x < data.length; x++) {
                markup += "<option value=" + data[x].Value + ">" + data[x].Text + "</option>";
            }

            $('#ModelList').html(markup).show();
        },
        error: function (reponse) {
            alert("error : " + reponse);
        }
    });
}

次のコントローラー コードは、Ajax 呼び出しデータを供給するために呼び出されます。

[HttpPost]
public ActionResult GetAutoModel(int manufacturerId, int autoSellerListingId)
{
    int modelId = 0;

    // Get all the models associated with the target manufacturer
    List<AutoModel> modelList = this._autoLogic.GetModelListByManufacturer(manufacturerId);

    // If this is an existing listing, get the auto model Id value the seller selected.
    if (autoSellerListingId > 0)
        modelId = this._systemLogic.GetItem<AutoSellerListing>(row => row.AutoSellerListingId == autoSellerListingId).AutoModel.AutoModelId;

    // Convert all the model data to a SelectList and return it
    SelectList returnList = new SelectList(modelList, "AutoModelId", "Description", modelId);

    return Json(returnList);
}

new SelectList()コントローラー コード (modelId)の呼び出しの最後のパラメーターに注意してください。これは、選択オブジェクトがAjax呼び出しで作成されたら、選択した値を設定したいものです。問題は、クライアントでこの値にアクセスする方法がわからないことです。すべてが正しく機能しています。選択した値にアクセスして設定する方法がわかりません。

4

1 に答える 1

2

問題は、クライアントでこの値にアクセスする方法がわからないことです。

Selectedクライアントのブール値のプロパティを確認できます。

if (data[x].Selected) {
    markup += "<option value=" + data[x].Value + " selected=\"selected\">" + data[x].Text + "</option>";
} else {
    markup += "<option value=" + data[x].Value + ">" + data[x].Text + "</option>";
}
于 2013-03-31T18:38:05.423 に答える