c# - 从主视图部分 View 访问 Ninject 对象

标签 c# asp.net-mvc-4 dependency-injection ninject

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

这里是我到目前为止所尝试的简要概述:-

由服务创建并绑定(bind)它们:

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
    }
}

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

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

最佳答案

如果与构造函数注入(inject)一起使用,Ninject 是否有效?

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

有点像

    IUnitOfWork UnitOfWork;

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

你检查过这里吗?

bind to property always return null

当您说“在每个页面上”时,您的意思是“在每个 Controller 上”吗?

如果是,我认为您可以创建一个 BaseController 类,所有 Controller 都应该继承自它。我正在使用这种方法。

关于c# - 从主视图部分 View 访问 Ninject 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15787510/

相关文章:

java - org.eclipse.e4.core.di.InjectionException : Could not find satisfiable constructor 问题

c# - 如何从配置文件加载统一设置?

c# - 如何确保数据流 block 仅按需创建线程?

javascript - 如何从模型获取数据到 JavaScript MVC 4?

c# - 在 session 变量中存储多个值

c# - 执行处理程序的子请求时出错 - 从 Controller 调用的部分 View

javascript - X-Frame-Options : "http://test.test.net/Feedback/Create?appId=TestApp" does not permit cross-origin framing using MVC5 拒绝加载

Angular 5 和 lerna NullInjectorError : No provider for InjectionToken

c# - Fiddler 不捕获带有 "GetAsync"的流量

c# - xml 用它的泛型类型序列化一个泛型类