これを行うには簡単な方法が必要だと確信していますが、頭を悩ませることはできないようです。
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)レベルから該当するすべてのステータスを取得できるようにする必要があります。現在、これが機能することを確認するために、ブートストラップコードでIKernelを公開し、IKernel.Get()だけを公開しましたが、これが最もクリーンな方法ではないと思います。コンストラクターインジェクションを使用しますが、コンストラクターのパラメーターとしてIUserStatusServiceを配置すると、ビューで新しいUserGridModel(Html)を明示的に使用せずに、Ninjectが正しいパラメーターをインジェクトする方法を理解できません。そこにIKernel。
私は何かが足りないか、これをすべて間違って配線しています。いずれにせよ、私は立ち往生しています...何か助けはありますか?Ninjectを介して私のサービスのインスタンスを取得する適切な方法は何ですか