【发布时间】:2011-07-31 02:48:36
【问题描述】:
我确信必须有一个简单的方法来做到这一点,但我似乎无法理解它。
我正在使用 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]);
}
}
现在我需要将服务注入此模型,以便它可以从服务 (BLL) 级别提取所有适用的状态。目前只是为了确保这能正常工作,我在引导代码中公开了 IKernel 并且只是 IKernel.Get() 但我认为这不是获取它的最干净的方法。我会使用构造函数注入,但是如果我将 IUserStatusService 作为参数放入构造函数中,我无法弄清楚当我在视图中调用 new UserGridModel(Html) 时如何让 Ninject 注入正确的参数而不显式使用IKernel 在那里。
我要么遗漏了一些东西,要么把这一切都弄错了。无论哪种方式,我都被困住了......有什么帮助吗?通过 Ninject 获取我的服务实例的正确方法是什么
【问题讨论】:
标签: asp.net-mvc-3 ninject mvccontrib-grid