Biorąc pod uwagę następujące klasy i metodę akcji kontrolera:
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 };
}
I następujący formularz:
<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>
Jestem w stanie zaktualizować zarówno instancję School, jak i członka Address szkoły. To całkiem miłe! Dziękuję zespołowi ASP.NET MVC!
Jak jednak użyć jQuery, aby wybrać listę rozwijaną, aby móc ją wstępnie wypełnić? Zdaję sobie sprawę, że mógłbym zrobić to po stronie serwera, ale na stronie będą inne dynamiczne elementy, które mają wpływ na listę.
Oto, co mam do tej pory i nie działa, ponieważ selektory wydają się nie pasować do identyfikatorów:
$(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);
});
});
});