Я бы предложил вам создать действие, которое будет возвращать JSON-представление всех компаний для выбранной страны:
public class CompaniesController: Controller
{
public ActionResult List(string countryId)
{
IEnumerable<Company> companies = Repository.GetCompanies(countryId);
// Let's assume that Company has two properties: Id and Name
return Json(companies);
}
}
Тогда при условии, что у вас уже есть выпадающий список для стран:
<%= Html.DropDownListFor(x => x.Country, Model.Countries) %>
<%= Html.DropDownListFor(x => x.Company, Enumerable.Empty<SelectListItem>()) %>
Вы можете зарегистрироваться для события onchange
и, когда это событие произойдет, выполнить AJAX-вызов для действия List
контроллера Companies
и получить связанные компании:
$(function() {
$('select#Country').change(function() {
var countryId = $(this).val();
$.post('/companies/list', { countryId: countryId }, function(companies) {
var companiesSelect = $('select#Company');
// loop through the companies and fill the dropdown
$(companies).each(function(index, company) {
companiesSelect.append(
'<option value="' + company.Id + '">'
+ company.Name +
'</option>');
});
});
});
});