Помните, что контроллеры обслуживают определенные запросы (получить клиента, просмотреть клиента, создать счет).
В вашем случае вам не нужно «получать контроллер клиента для создания клиента».
Просто создайте обычный метод, который называется, например, «GetCustomer». Это можно вызвать с нескольких контроллеров. Этот метод может жить где угодно - возможно, в сборке помощников в пространстве имен вашей модели (при условии, что ваша Модель находится в отдельной библиотеке классов, что я и делаю). Просто позвоните по этому поводу вашему контроллеру счетов.
Вы не хотите двигаться вперед и назад от контроллеров - это противоречит принципу MVC.
должно быть
URL Request -> Controller -> Model -> Controller -> View
.
не
URL Request -> Controller -> Controller -> Model -> Controller -> View.
Вот что я имею в виду.
Контролер клиентов:
public ActionResult Index(int customerId)
{
var customer = Model.GetCustomerById(customerId);
return View(customer);
}
Контроллер счетов:
public ActionResult GetInvoice(int customerId)
{
var customer = Model.GetCustomerById(customerId);
return View("Invoice", customer);
}
Модель:
public Customer GetCustomerById(int customerId)
{
var customer = yourDatabaseRepository.GetCustomerById(customerId);
}
Знаешь, что я имею в виду? Ключ заключается в том, чтобы не помещать логику «GetCustomer» в контроллер - абстрагировать ее в модель - доступную для всех контроллеров.