mvc ajax dropdownlist值问题

时间:2011-10-26 19:07:17

标签: c# asp.net-mvc ajax model-view-controller

所以我遇到了处理级联下拉列表的问题。每次我在第一个下拉列表中选择一个值时,第二个下拉列表将被填充,但是“第二个下拉列表顶部的第一个选定值”。那有意义吗?以下是代码。我不确定它是否正确附加,似乎无法在萤火虫上找到任何东西。

感谢任何建议。

谢谢!

观点:

<script type="text/javascript">
    $(function () {
        $('#<%: ViewData.TemplateInfo.GetFullHtmlFieldId("1stLevel") %>').change(function () {
            $.ajax({
                url: '<%: Url.Action("Index","2ndLevelDetails") %>?1stLevelId=' + $(this).val(),
                success: function (data) {
                    $('#<%: ViewData.TemplateInfo.GetFullHtmlFieldId("2ndLevelId") %>').html(data);
                },
                async: false
            });
        });
    });
</script>


            <div class="dropdown">
                <%: Html.DropDownList("1stLevelDetails", new SelectList(Model.1stLevel, "1stLevelId", "1stLevelDescription"))%>
            </div>

            <div class="dropdown">
                <%: Html.DropDownListFor(model => model.2ndLevelId, new SelectList(Model.NTEESecondaryCodes, "2ndLevelId", "2ndLevelDescription", Model.2ndLevelId))%>
            </div>

控制器2ndlevel,返回选项列表

public string Index(int 1stLevelId)
{
    var ntee = new System.Text.StringBuilder();
    foreach (2ndLevelDetails code in 2ndLevelDetails.Find2ndLevelIds(ArgentDb, 1stLevelId))
    {
        ntee.AppendFormat("<option value=\"{0}\">{1}</option>", code.2ndLevelId, code.Description);
    }

    return ntee.ToString();
}

1 个答案:

答案 0 :(得分:0)

尝试使用jquery的实时绑定器..

$('#<%: ViewData.TemplateInfo.GetFullHtmlFieldId("1stLevel") %>').live('change', function () {
// ... code here

我必须使用live来绑定更改事件,因为我记得..我不知道为什么。