ASP.NET MVC Html.DropDownList填充Ajax调用控制器?

UpT*_*eek 17 asp.net-mvc asp.net-mvc-2

我想为表示为下拉列表的字段类型创建一个编辑器模板.在编辑器模板的定义中,我想使用对控制器上的操作的调用来填充DropDownList,将结果返回为JSON - 任何想法如何执行此操作?

例如:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<TheFieldType>" %>
<%= Html.DropDownList(.....
Run Code Online (Sandbox Code Playgroud)

Dar*_*rov 64

在编辑器模板中提供一个空的下拉列表:

<%= Html.DropDownListFor(
    x => x.PropertyToHoldSelectedValue, 
    Enumerable.Empty<SelectListItem>(), 
    "-- Loading Values --",
    new { id = "foo" }) 
%>
Run Code Online (Sandbox Code Playgroud)

然后设置一个将返回值的控制器操作:

public class FooController: Controller
{
    public ActionResult Index()
    {
        return Json(new[] {
            new { Id = 1, Value = "value 1" },
            new { Id = 2, Value = "value 2" },
            new { Id = 3, Value = "value 3" },
        }, JsonRequestBehavior.AllowGet);
    }
}
Run Code Online (Sandbox Code Playgroud)

然后使用AJAX填充值:

$(function() {
    $.getJSON('/foo/index', function(result) {
        var ddl = $('#foo');
        ddl.empty();
        $(result).each(function() {
            $(document.createElement('option'))
                .attr('value', this.Id)
                .text(this.Value)
                .appendTo(ddl);
        });
    });
});
Run Code Online (Sandbox Code Playgroud)

  • 这看起来很棒 - 我会试一试并回来. (2认同)
  • 虽然,这个解决方案已有3年历史,但仍然可以创造奇迹.谢谢达林. (2认同)