asp.net-mvc - 从 MVC 中的 _Layout.cshtml 中的 Ninject 获取对象实例

标签 asp.net-mvc ninject ninject.web.mvc

在我的主布局页面中,我需要访问 SessionManager 实例只是为了显示哪个用户已登录。

我的工作方式如下(_Layout.cshtml):

@using Ninject
@{
    var kernel = new StandardKernel();
    var sm = kernel.Get<SessionManager>();
}
<!DOCTYPE html>
<html>
   ...
   etc...

然后我进一步使用这样的实例:

<p>Logged in as @(sm.LoggedInUser.Name)</p>

现在这可以工作了,但是这是否不整洁?我可以用更好的方式做到这一点吗?像这样创建 StandardKernel 实例可以吗(我假设它是单例)?

我考虑过让所有 Controller 都继承自基本 Controller ,并将 SessionManager 注入(inject)到基本 Controller 中,但这似乎有点过头了。

最佳答案

通常,NInject MVC 扩展会插入 MVC 的依赖解析器基础设施中,您应该能够通过它解析您的服务:

var sm = DependencyResolver.Current.GetService<SessionManager>();

关于asp.net-mvc - 从 MVC 中的 _Layout.cshtml 中的 Ninject 获取对象实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33633375/

相关文章:

asp.net-mvc-4 - 自定义 IActionInvoker 和异步操作

c# - 在两个服务的构造函数之间检测到循环依赖

asp.net-mvc - 与 Entity Framework 一起使用的没有存储库模式的依赖注入(inject)

javascript - 我在将 Angular JS Controller 重定向到 C# Controller 时遇到问题。下面是我的 Scrip Controller 代码和 C# Controller 代码

asp.net-mvc - 如何防止将非数字输入到上/下控件中?

c# - NamedScopes Ninject 绑定(bind)和异步(线程)

asp.net - 安装 Ninject.MVC5 后出现 FileLoadException

.net - 在ASP.NET MVC中生成QR代码

asp.net-mvc - 在哪里/如何将 Solr 安装到 ASP.net MVC 应用程序中(使用 nHibernate/存储库模式)

c# - AOP Ninject 停止拦截方法被调用