使用AJAX/jQuery将SelectList获取到MVC视图

Chr*_*ris 6 javascript ajax asp.net-mvc jquery drop-down-menu

我有一个C#MVC应用程序,它根据所选日期填充下拉列表.选择日期后,我将通过AJAX/jQuery将其发送给一个动作.该操作获取该日期要返回的项目列表.

这是我的问题所在.我之前已经完成了它,我从动作渲染局部视图并将SelectList作为模型传递给它.但是,我真的只想在原始视图中内联,所以我希望有一些方法可以返回SelectList,并从那里做一些神奇的Javascript/JQuery将它放入下拉列表中.

有没有人曾经这样做过?如果是这样,在调用load()返回SelectList后,我在客户端结束了什么?

我之前做过类似的事情,当我刚刚返回一个字符串或其他值来呈现为直文时:

$("#returnTripRow").load("/Trip.aspx/GetTripsForGivenDate?date=" + escape(selection));
Run Code Online (Sandbox Code Playgroud)

但我不知道如何拦截数据并将其转换为Html.DropDown()调用或等效.

有任何想法吗?

谢谢,

克里斯

Dar*_*rov 19

假设您有一个控制器操作,该操作将为下拉列表提供数据:

public ActionResult Cars()
{
    return Json(new[] {
        new { id = "bmw", name = "BMW" },
        new { id = "mer", name = "Mercedes" },
        new { id = "aud", name = "Audi" }
    }, JsonRequestBehavior.AllowGet);
}
Run Code Online (Sandbox Code Playgroud)

在你看来:

$.getJSON('/home/cars', { }, function(cars) {
    var list = $('select#cars');
    list.find('option').remove();
    $(cars).each(function(index, car) {
        list.append('<option value="' + car.id + '">' + car.name + '</option>');
    });
});
Run Code Online (Sandbox Code Playgroud)