Как заполнить вспомогательный @ html.dropdownlist mvc с помощью JSon - PullRequest
6 голосов
/ 09 марта 2011

У меня есть <select>, который загружается JSon.Но я хочу использовать вместо этого «@ html.dropdownlist helper».Мой Json:

function LoadSites() {
$("SelectSite").html("");
$.getJSON("/Pedido/GetSite", null, function (data) {
    $("#SelectSite").append("<option value=0>Selecione...</option>");
    $.each(data.Result, function (index, site) {
        $("#SelectSite").append("<option value='" + site.Id + "'>" + site.Nome + "</option>");
    });
});

этот Json заполняет это ...

<select id="SelectSite"></select>

Мой контроллер:

        [HttpGet]
    public JsonResult GetSite()
    {
        Repository<Site> siteRepo = new Repository<Site>( unitOfWork.Session );
        return this.Json( new { Result = siteRepo.All() }, JsonRequestBehavior.AllowGet );
    }

Я хочу, чтобы мой код был многократно используемымдокументированию.Как я могу отправить объект "site" из JSon в "cshtml", используя выпадающий список, чтобы сделать что-то вроде @html.dropdownlist(site.id, site.Nome) ???

Есть ли способ?

Tks парни.

1 Ответ

18 голосов
/ 09 марта 2011

По вашему мнению:

@Html.DropDownListFor(x => x.SiteId, new SelectList(Enumerable.Empty<SelectListItem>()))

, где SiteId - это свойство модели вашего представления, которая будет получать идентификатор выбранного сайта при отправке формы.

заполните этот раскрывающийся список, используя AJAX:

$(function() {
    $.getJSON('@Url.Action("GetSite", "Pedido")', function(result) {
        var ddl = $('#SiteId');
        ddl.empty();
        $(result).each(function() {
            ddl.append(
                $('<option/>', {
                    value: this.Id
                }).html(this.Nome)
            );
        });
    });
});

и действие контроллера, которое будет возвращать данные JSON:

public ActionResult GetSite()
{
    var sites = new[]
    {
        new { Id = "1", Nome = "site 1" },
        new { Id = "2", Nome = "site 3" },
        new { Id = "3", Nome = "site 3" },
    };
    return Json(sites, JsonRequestBehavior.AllowGet);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...