Jquery组合框设置选定的值

时间:2015-04-28 13:15:38

标签: javascript c# jquery asp.net-mvc combobox

我的代码如下:

查看

            @Html.LabelFor(m => m.Employee.ManagerId)
            @Html.DropDownListFor(m => m.Employee.ManagerId, Model.Employee.ManagerList, new { @placeholder = "Select a Manager...", @disabled = "true" })
            @Html.ValidationMessageFor(m => m.Employee.ManagerId)

查看(Jquery代码)

此函数调用控制器以获取将在ManagerList中填充的列表。

function RefreshManagers(engineerSelected) {
    if (engineerSelected != "") {
        $.ajax({
            url: '@Url.Action("ReloadManagersByEmployee", "Locator")',
            type: 'POST',
            data: { employeeId: engineerSelected },
            success: function (data) {
                $("#Employee_ManagerId").empty();
                $.each(data.managers, function (index, optiondata) {
                    $(document.createElement('option'))
                        .attr('value', optiondata.Value)
                        .text(optiondata.Text)
                        .appendTo($("#Employee_ManagerId"));
                });
                $("#Employee_ManagerId").combobox("refresh");
            },
            error: function (xhr) { alert("Unable to reload managers"); }
        });
    }
    else {
        $("#Employee_ManagerId").empty();
        $("#Employee_ManagerId").append("<option value=''>Select a Manager...</option>");
    }
    $("#Employee_ManagerId").combobox("refresh");
}

控制器: 控制器返回以下内容:

public JsonResult ReloadManagersByEmployee(string employeeId)
    {
        //Do the stuff...call the corresponding service and get the list, then:
        return Json(new
        {
            managers = managerList
        });
    }

注意:创建列表'managerList'时,我已经预先选择了要显示的值。

问题:

当JQuery创建组合框时,未正确设置所选管理器(在创建列表时先前选择)。

我在将列表返回到视图之前检查了列表,并且已正确设置。

问题:

一旦 RefreshManagers()函数加载管理器列表,我该怎么做才能将该列表的选定值更改为已在控制器中选择的值?

问题2:

通过应用@Stephen Muecke告诉的更改来正确刷新管理器列表,但是当将模型传递给控制器​​时,未传递选定的管理员ID(始终为null)

@Html.DropDownListFor(m => m.Employee.ManagerId, Model.Employee.ManagerList, new { @placeholder = "Select a Manager..." })

为什么此属性未正确传递?

答案

它没有传递该值,因为在DropDownListFor中设置了属性@disabled = true,只需将其设置为false。

0 个答案:

没有答案