2011-03-09 11 views
6

Bir JSon tarafından yüklenen bir <select> var. Ama bunun yerine "@ html.dropdownlist helper" kullanmak istiyorum. Benim Json geçerli:JSon kullanarak bir @ html.dropdownlist mvc yardımcısı nasıl doldurulur

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

bu Json Bu doldurmak ...

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

Benim Denetleyici: Benim kod daha yeniden kullanılabilir ve kendi kendini belgeleyen istiyorum

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

. @html.dropdownlist(site.id, site.Nome) ??? gibi bir şey yapmak için açılan listeyi kullanarak "site" nesnesini JSon'dan "cshtml" ye nasıl gönderebilirim ???

Bir yolu var mı?

Tks çocuklar. Size göre

cevap

18

:

SiteId form gönderildiğinde Seçili site kimliği alacaksınız görünümü modelinin bir özelliktir
@Html.DropDownListFor(x => x.SiteId, new SelectList(Enumerable.Empty<SelectListItem>())) 

.

ve sonra kullanarak bu açılan doldurmak olabilir 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) 
      ); 
     }); 
    }); 
}); 

ve JSON verilerini dönecekti kontrolör eylemi:

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

ben açılan üzerine doldurmak istediğiniz durumda ne yapmalıyım kendini yüklemek mi http://stackoverflow.com/questions/5389571/formcollection-not-containing-select-control-added-in-mvc-razor – Vijay

+0

Teşekkür ederim Darin Dimitrov.It bana yardımcı olur –

+0

@darin Model hatası varsa ve Seçilen seçeneğin benim için gittiğini görmek için geri döndüğümde, arama yaptığımda talep üzerine yüklendiği için tahmin ediyorum. Bunu nasıl düzelteceğini biliyor musun? Seçmek için bir seçim aramadan önce 3 harf yazmalıyım –

İlgili konular