Я уверен, что должен быть простой способ сделать это, но я просто не могу обойти это.
Я использую элемент управления 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