我使用ninject将我的接口绑定到我的存储库,如你所见:
private static void RegisterServices(IKernel kernel)
{
kernel.Bind<CMSDataContext>().To<CMSDataContext>().InRequestScope();
kernel.Bind<IUserRepository>().To<UserRepository>().InRequestScope();
kernel.Bind<INewsRepository>().To<NewsRepository>().InRequestScope();
kernel.Bind<IConfigurationRepository>().To<ConfigurationRepository>().InRequestScope();
}
例如,您可以在此处看到home controller
:
public class HomeController : Controller
{
//
// GET: /fa/Home/
private IConfigurationRepository _configurationRepository;
public HomeController(IConfigurationRepository configurationRepository)
{
_configurationRepository = configurationRepository;
}
public ActionResult Index()
{
ViewBag.Configuration = _configurationRepository.GetConfiguration().First();
return View();
}
}
但我需要在我的shared view
中调用一个界面,我的意思是masterpage
,如您所见:
<head>
@{
IConfigurationRepository _iconfigurationRepository;
}
<!-- Basic -->
<title>@ViewBag.Configuration.Title</title>
<!-- Define Charset -->
<meta charset="utf-8" />
我的问题是我如何使用ninject将此界面绑定到其存储库,我的意思是configurationRepository
?
答案 0 :(得分:-1)
如果需要在视图中解析依赖关系,可以使用dependencyResolver。
在你的剃须刀视图中:
@{
var config = DependencyResolver.Current.GetService<IConfigurationRepository >();
}
在这种情况下,如果ninject可以解析构造函数参数,那么ninject是当前依赖项解析器,您可以在视图,过滤器,控制器等中使用。