ASP.NET MVC Html.DropDownList заполняется Ajax-вызовом контроллера? - PullRequest
17 голосов
/ 30 сентября 2010

Я хотел создать шаблон редактора для типа поля, который представлен в виде выпадающего списка.В определении шаблона редактора я хотел бы заполнить DropDownList с помощью вызова действия на контроллере, возвращающего результаты в виде JSON. Есть идеи, как это сделать?

Например, что-то вроде:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<TheFieldType>" %>
<%= Html.DropDownList(.....

Ответы [ 2 ]

64 голосов
/ 30 сентября 2010

В шаблоне редактора укажите пустой выпадающий список:

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

Затем настройте действие контроллера, которое будет возвращать значения:

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

И затем заполните значения, используя 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);
        });
    });
});
3 голосов
/ 29 августа 2014

Я знаю, что этому посту несколько лет, но я нашел его, и вы тоже.Я использую следующее решение, и оно работает очень хорошо.Строго набирается без необходимости писать одну строчку Javascript.

mvc4ajaxdropdownlist.codeplex.com

Вы можете загрузить его через Visual Studio в виде пакета NuGet.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...