вызов метода на контроллере из другого контроллера в MVC - PullRequest
0 голосов
/ 16 февраля 2012

Я хочу вызвать метод на другом контроллере.Проблема в том, что в моем проекте все контроллеры создаются с использованием Виндзорского замка, а Виндзорский замок разрешает зависимости.Это означает, что я не могу создать экземпляр контроллера с помощью new, так как тогда ему нужны его иждивенцы.Как попросить MVC создать экземпляр контроллера, а затем вызвать для него метод (который возвращает объект)?

1 Ответ

0 голосов
/ 18 февраля 2012

Я расскажу вам две вещи: 1) Во-первых, я покажу вам, как вы, скорее всего, сможете достичь того, чего вы хотите, и 2) Затем я рекомендую вам достичь своей цели в другом путь:)

1: при использовании автопроводки способ получить материал из контейнера - объявить зависимость, добавив ее в качестве аргумента конструктора - например, (при условии, что контейнер знает, как разрешить контроллеры по их конкретным типам):

public class HomeController
{
    readonly AccountController accountController;

    public HomeController(AccountController accountController)
    {
        this.accountController = accountController;
    }
}

Скорее всего, это позволит вам делать то, что вы хотите с AccountController с помощью HomeController. Однако это не очень красиво.

2: Впрыскивание одного контроллера в другой, вероятно, не то, что вы (действительно) хотите. Я предполагаю, что вы действительно хотите переместить любую логику, которую вы используете в методе действия вашего контроллера, в выделенный сервис, например, DoSomethingInteresting, который реализует IDoStuff, и затем пусть оба ваших контроллера зависят от IDoStuff. Это имеет для вас смысл?

...