Вы можете достичь этого, используя AJAX. Когда компания изменится, отправьте запрос на сервер, передав новый идентификатор компании, чтобы получить связанные контакты. Для этого вам понадобится действие контроллера, возвращающее частичное представление, содержащее раскрывающийся список контактов:
Модель:
public class SafetyContactsViewModel
{
public int? SelectedContactId { get; set; }
public IEnumerable<SelectListItem> Contacts { get; set; }
}
Контроллер:
public ActionResult Contacts(int? companyId)
{
var contacts = new SafetyContactsViewModel
{
Contacts = new SelectList(
subcontractRepository.GetContacts(companyId),
"contact_id",
"contact_name"
)
};
return PartialView(contacts);
}
Тогда ваше частичное Contacts.ascx
будет содержать выпадающий список:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<SafetyContactsViewModel>" %>
<%= Html.DropDownListFor(x => x.SelectedContactId, Model.Contacts, "** Select Contact **") %>
И затем вы можете прикрепить обработчик событий .change () к выпадающему списку компаний, который вызовет действие контроллера:
$(function() {
$('#the_id_of_the_companies_drop_down').change(function() {
$('#id_of_a_div_that_contains_the_contacts_drop_down')
.load('/home/contacts', { companyId: $(this).val() });
});
});