我相信必須有一個簡單的方法來做到這一點,但我似乎不能讓我的頭腦。Ninject和MVCContrib GridModels
我正在使用MVCContrib網格控件在我正在處理的3層應用程序(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)級別獲取所有適用的狀態。目前只是爲了確保它能夠工作,我在Bootstrapping代碼中公開了IKernel,並且只是公開了IKernel.Get(),但我認爲這並不是最簡單的方法。我會使用構造函數注入,但如果我把IUserStatusService作爲參數放在構造函數中,我無法弄清楚當我在視圖中調用新的UserGridModel(Html)時如何讓Ninject注入正確的參數,而不顯式使用IKernel在那裏。
我要麼錯過了一些東西,要麼接線錯誤。無論哪種方式,我卡住了...有什麼幫助?通過Ninject獲得我的服務實例的正確方法
謝謝雷莫。我同意,在看完它之後,讓我的控制器在需要時將此列表放入viewdata/viewmodel會更有意義。 – Peter