ASP.NET MVC Html.DropDownList populated by Ajax call to controller?

前端 未结 2 384
广开言路
广开言路 2020-12-01 00:10

I wanted to create an editor template for a field type that is represented as a dropdownlist. In the definition of the editor template I would like to populate the DropDown

2条回答
  •  无人及你
    2020-12-01 01:05

    In the editor template provide an empty dropdown:

    <%= Html.DropDownListFor(
        x => x.PropertyToHoldSelectedValue, 
        Enumerable.Empty(), 
        "-- Loading Values --",
        new { id = "foo" }) 
    %>
    

    Then setup a controller action that will return the values:

    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);
        }
    }
    

    And then populate the values using 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);
            });
        });
    });
    

提交回复
热议问题