これを行う簡単な方法が必要であると確信していますが、私はちょうどそれを回避することはできません。NinjectとMVCContrib GridModels
MVCContrib Gridコントロールを使用して、私が取り組んでいる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]);
}
}
今Iサービス(BLL)レベルから該当するすべてのステータスを取得できるように、このモデルにサービスを注入する必要があります。現在のところ、これが機能することを確認するために、IKernelをBootstrappingコードに公開し、IKernel.Get()だけを公開しましたが、それを取得するのが最もクリーンな方法ではないと思います。私はコンストラクタインジェクションを使用しますが、IUserStatusServiceをコンストラクタのパラメータとして配置すると、ビューで新しいUserGridModel(Html)を明示的に使用せずにNinjectに正しいパラメータを挿入する方法がわかりませんそこにIKernel。
私は何か不足しているか、これをすべて間違って配線しています。いずれにせよ、私は立ち往生しています...どんな助け? Ninjectを通じてサービスのインスタンスを取得する適切な方法
ありがとうございます。私はそれを見た後、必要に応じてコントローラがこのリストをviewdata/viewmodelにドロップさせる方がはるかに意味があることに同意します。 – Peter