从主视图分部视图访问Ninject对象

本文关键字:访问 Ninject 对象 视图 主视图 | 更新日期: 2023-09-27 18:07:17

我正在尝试访问由ninject在我的布局视图中创建的对象,但我不知道如何访问它们。

这里是我到目前为止所尝试的一个简短的大纲:-

由service创建并绑定:

public interface IService 
{
    void SomeMethod();
}
public class Service : IService
{
    public void SomeMethod
    {
    }
}
Bind<IService>().To<Service>();

创建一个静态类并使用[Inject]属性:

public static class MasterLayout
{
    [Inject]
    public static IService Service { private get; set; }
    public static void CallSomeMethod();
    {
        Service.SomeMethod
    }
}

每次我从我的主视图或部分视图调用MasterLayout.CallSomeMethod()时,Service字段总是空的。

这是可能的,还是我应该创建一个基本控制器,让其他控制器从它继承,我可以设置这些值在主视图和部分视图中使用?有没有更好的方法来实现这个目标?

从主视图分部视图访问Ninject对象

如果与构造函数注入一起使用,Ninject工作吗?

(见http://ninject.codeplex.com/wikipage?title=Injection%20Patterns)

之类的
    IUnitOfWork UnitOfWork;
    public AccountController(IUnitOfWork unitOfWork)
    {
        this.UnitOfWork = unitOfWork;
    }

您在这里检查过了吗?

绑定属性总是返回null

你说的"on every page"是指"on every controller"吗?

如果是,我认为你可以创建一个BaseController类,所有的控制器应该从它继承。我正在使用这个方法

你必须创建一个自定义控制器工厂来让Ninject创建控制器。一旦你这样做了,它就会起作用。