Ninject и MVCContrib GridModels - PullRequest
       23

Ninject и MVCContrib GridModels

1 голос
/ 31 июля 2011

Я уверен, что должен быть простой способ сделать это, но я просто не могу обойти это.

Я использую элемент управления MVCContrib Grid для отображения нескольких сеток вТрехуровневое приложение, над которым я работаю (ASP.NET MVC3 PL -> BLL -> DAL).Я также использую Ninject для автоматического ввода всех моих зависимостей.

Проблема, с которой я сталкиваюсь, заключается в том, что я использую сеточную модель для отображения сеток в своих представлениях следующим образом:

@Html.Grid(Model).WithModel(new UserGridModel(Html)).Attributes(id => tableName)

иопределите соответствующую сеточную модель:

public class UserGridModel : GridModel<User> {

    public UserGridModel(HtmlHelper html)
    {
        Dictionary<int, string> userStatuses = /*TODO: GET ALL USER STATUSES*/;            

        Column.For(user => user.ID);
        Column.For(user => html.ActionLink(user.Email, "Edit", new {id = user.ID})).Named(DtoResources.UserDto_Email);
        Column.For(user => user.FirstName);
        Column.For(user => user.LastName);
        Column.For(user => userStatuses[user.StatusID]);
    }
}

Теперь мне нужно добавить сервис в эту модель, чтобы он мог получать все применимые статусы с уровня сервиса (BLL).В настоящее время просто для того, чтобы убедиться, что это будет работать, я показал IKernel в коде Bootstrapping и просто IKernel.Get (), но я не думаю, что это самый чистый способ получить его.Я бы использовал инъекцию конструктора, но если я добавлю IUserStatusService в качестве параметра в конструктор, я не могу понять, как заставить Ninject вводить правильный параметр, когда я вызываю новый UserGridModel (Html) в представлении без явного использованияIKernel там.

Я либо что-то упустил, либо неправильно все связал.В любом случае, я застрял ... любая помощь?Как правильно получить экземпляр моего сервиса через Ninject

1 Ответ

2 голосов
/ 31 июля 2011

На мой взгляд, самое чистое решение вашей проблемы - это изменить ваш контроллер так, чтобы он создавал модель, которая уже содержит статус пользователя в виде строки, чтобы не требовалось никаких преобразований в представлении.Я хотел бы сделать как можно меньше в представлении и модели сетки.

Другая возможность состоит в том, чтобы внедрить службу в ваше представление и передать ее в модель сетки.Но, как я уже говорил, вы вводите логику в свое представление.

...