Asp.net mvc 如何使用Jquery更新强类型Html.DropDownList

Asp.net mvc 如何使用Jquery更新强类型Html.DropDownList,asp.net-mvc,jquery,Asp.net Mvc,Jquery,我有一个带有两个单选按钮和下拉列表的网页,如下所示: <div class="sectionheader">Course <div class="dropdown"><%=Html.DropDownList("CourseSelection", Model.CourseList, new { @class = "dropdown" })%> </div> <div class="radiobuttons"&g

我有一个带有两个单选按钮和下拉列表的网页,如下所示:

<div class="sectionheader">Course
    <div class="dropdown"><%=Html.DropDownList("CourseSelection", Model.CourseList, new { @class = "dropdown" })%> </div>         
    <div class="radiobuttons"><label><%=Html.RadioButton("CourseType", "Advanced", false )%> Advanced </label></div>
    <div class="radiobuttons"><label><%=Html.RadioButton("CourseType", "Beginner", true )%> Beginner </label></div>
</div>
(function($) {
    $.fn.emptySelect = function() {
        return this.each(function() {
            if (this.tagName == 'SELECT') this.options.length = 0;
        });
    }

$.fn.loadSelect = function(optionsDataArray) {
    return this.emptySelect().each(function() {
        if (this.tagName == 'SELECT') {
            var selectElement = this;
            $.each(optionsDataArray, function(index, optionData) {
            var option = new Option(optionData.Text, optionData.Value);

                if ($.browser.msie) {
                    selectElement.add(option);
                }
                else {
                    selectElement.add(option, null);
                }
            });
        }
    });
}
})(jQuery);
课程
先进的
初学者
dropdownlist是强类型的,并填充有
模型。CourseList
(注意:在第一页加载中,“初学者”是默认选择,下拉列表相应地显示初学者课程选项)

我希望能够根据选择的单选按钮更新下拉列表,即如果选择“高级”,则在下拉列表中显示一个课程选项列表,如果选择“初学者”,则显示另一个课程列表


编辑-在下面发布我自己的答案,以显示对我有效的解决方案(最终!)继续返回您的selectlistitem集合;这可以很好地转换为JSOn,至少应该是这样,作为一个类似{text:“a”,value:“1”}的对象数组,您可以通过该数组循环并以这种方式重新创建列表

因此,它将处理强类型对象。您只需获取对象并构造基础下拉列表的元素


HTH.

我想调用的代码位于我的控制器中:

public ActionResult UpdateDropDown(string courseType)
    {
        IDropDownList dropdownlistRepository = new DropDownListRepository();
        IEnumerable<SelectListItem> courseList = dropdownlistRepository.GetCourseList(courseType);
        return Json(courseList);
    }
loadSelect
功能直接取自手册,如下所示:

<div class="sectionheader">Course
    <div class="dropdown"><%=Html.DropDownList("CourseSelection", Model.CourseList, new { @class = "dropdown" })%> </div>         
    <div class="radiobuttons"><label><%=Html.RadioButton("CourseType", "Advanced", false )%> Advanced </label></div>
    <div class="radiobuttons"><label><%=Html.RadioButton("CourseType", "Beginner", true )%> Beginner </label></div>
</div>
(function($) {
    $.fn.emptySelect = function() {
        return this.each(function() {
            if (this.tagName == 'SELECT') this.options.length = 0;
        });
    }

$.fn.loadSelect = function(optionsDataArray) {
    return this.emptySelect().each(function() {
        if (this.tagName == 'SELECT') {
            var selectElement = this;
            $.each(optionsDataArray, function(index, optionData) {
            var option = new Option(optionData.Text, optionData.Value);

                if ($.browser.msie) {
                    selectElement.add(option);
                }
                else {
                    selectElement.add(option, null);
                }
            });
        }
    });
}
})(jQuery);

@布莱恩。要使用JSON,我是否需要将我的操作的返回类型设置为JsonResult,并同时返回JSON(dropdownStrepository?在过去的4个小时里,我们一直在努力解决这个问题,并且一直在兜圈子……看看这个很好的例子:也看看这个:谢谢你的链接。我已经签出了它们,并尝试根据它们和jQuery中的代码示例重新编写代码。我仍在努力让它发挥作用。请看我上面编辑的帖子。有什么特别不起作用?使用firebug或IE8调试器可以确定数据是否返回。