Étant donné les classes suivantes et la méthode d'action du contrôleur :
public School
{
public Int32 ID { get; set; }
publig String Name { get; set; }
public Address Address { get; set; }
}
public class Address
{
public string Street1 { get; set; }
public string City { get; set; }
public String ZipCode { get; set; }
public String State { get; set; }
public String Country { get; set; }
}
[Authorize(Roles = "SchoolEditor")]
[AcceptVerbs(HttpVerbs.Post)]
public SchoolResponse Edit(Int32 id, FormCollection form)
{
School school = GetSchoolFromRepository(id);
UpdateModel(school, form);
return new SchoolResponse() { School = school };
}
Et le formulaire suivant :
<form method="post">
School: <%= Html.TextBox("Name") %><br />
Street: <%= Html.TextBox("Address.Street") %><br />
City: <%= Html.TextBox("Address.City") %><br />
Zip Code: <%= Html.TextBox("Address.ZipCode") %><br />
Sate: <select id="Address.State"></select><br />
Country: <select id="Address.Country"></select><br />
</form>
Je suis en mesure de mettre à jour à la fois l'instance de l'école et l'adresse de l'école. C'est très bien ! Merci à l'équipe ASP.NET MVC !
Cependant, comment puis-je utiliser jQuery pour sélectionner la liste déroulante afin de la pré-remplir ? Je me rends compte que je pourrais le faire côté serveur, mais il y aura d'autres éléments dynamiques sur la page qui affecteront la liste.
Voici ce que j'ai fait jusqu'à présent, et cela ne fonctionne pas car les sélecteurs ne semblent pas correspondre aux ID :
$(function() {
$.getJSON("/Location/GetCountryList", null, function(data) {
$("#Address.Country").fillSelect(data);
});
$("#Address.Country").change(function() {
$.getJSON("/Location/GetRegionsForCountry", { country: $(this).val() }, function(data) {
$("#Address.State").fillSelect(data);
});
});
});