Доступ к хранилищу в AccountController через конструктор - PullRequest
0 голосов
/ 04 марта 2011

Я использую MVC AccountController, который реализует поставщик членства ASP.NET. У меня есть репозиторий со всем доступом к моей базе данных, в который я добавил свойство стран, которое возвращает список стран. Я хочу добавить раскрывающийся список стран на страницу «Регистрация», чтобы иметь возможность получать эти данные из своего репозитория и передавать их в представление. Я использовал внедрение в другие контроллеры, но я не знаю, как применить это к существующему AccountController.

        // This constructor is used by the MVC framework to instantiate the controller using
    // the default forms authentication and membership providers.

    public AccountController()
        : this(null, null)
    {
    }

    // This constructor is not used by the MVC framework but is instead provided for ease
    // of unit testing this type. See the comments at the end of this file for more
    // information.
    public AccountController(IFormsAuthentication formsAuth, IMembershipService service)
    {
        FormsAuth = formsAuth ?? new FormsAuthenticationService();
        MembershipService = service ?? new AccountMembershipService();
    } 

Могу ли я изменить существующий конструктор AccountController для доступа к своему хранилищу?

Ответы [ 3 ]

1 голос
/ 04 марта 2011

Зарегистрируйте службы в вашем движке IoC, а затем удалите конструктор по умолчанию.

0 голосов
/ 05 марта 2011

Если вы используете MVC2, вы должны взглянуть на http://mvcstarter.codeplex.com/, он также использует Ninject. Как @Johan сказал, что вы просто должны поместить параметр и связать его в global.asax.cs.

Надеюсь, это поможет!

0 голосов
/ 05 марта 2011

Если вы уже зарегистрировали свой репозиторий с помощью ninject, вы можете просто добавить третий параметр в конструктор контроллера. Я видел ваш предыдущий комментарий о ninject, но я не использую NinjectModule. Если вы используете MVC 3, советуем вам взглянуть на nuget (http://nuget.codeplex.com) и загрузить пакет Ninject.MVC3 , который добавляет класс AppStartNinjectMvc3 в ваш проект, где вы можно зарегистрировать сервисы в ядре. Методы привязки:

kernel.Bind<IThingRepository>().To<SqlThingRepository>();

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...