Javascript MVC-级联下拉列表-如何获取选定值?

Javascript MVC-级联下拉列表-如何获取选定值?,javascript,jquery,asp.net-mvc-4,Javascript,Jquery,Asp.net Mvc 4,我有一个MVC应用程序,它的视图有层叠的下拉列表。在用户在第一个下拉列表中选择了一个值之后,我有以下Ajax调用来检索第二个下拉列表的数据: function GetAutoModel(_manufacturerId) { var autoSellerListingId = document.getElementById("AutoSellerListingId").value; $.ajax({ url: "/AutoSellerListing/GetAut

我有一个MVC应用程序,它的视图有层叠的下拉列表。在用户在第一个下拉列表中选择了一个值之后,我有以下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);
}
注意控制器代码modelId中新的SelectList调用中的最后一个参数。这就是我希望在Ajax调用中创建select对象后,将select值设置为的值。问题是我不知道如何在客户端访问这个值。一切正常,我只是不知道如何访问选定的值,然后设置它

问题是我不知道如何在客户端访问这个值

您可以查看客户端上的布尔属性:

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>";
}

工作完美。非常感谢。我在这上面花了一个多小时,答案很简单。如果你使用了javascript调试工具,如Firebug或Chrome Developer toolbar,并查看了从服务器返回的JSON,你会立即看到这个属性,以及它是如何为需要选择的相应项设置为true的。有趣的是,你提到这一点,因为我刚刚我将询问您如何确定“Selected”是对象上的属性。您还可以查看文档以查看返回的SelectList实现了IEnumerable,当您查看SelectListItem的文档时,您将看到所选属性。现在说真的,如果你打算做任何web开发,请使用javascript调试工具:-我实际上非常广泛地使用Chrome开发者工具。这是我第一次查看Network选项卡,查看Ajax调用返回的数据。我做浏览器开发的时间不长。