在我的主布局页面中,我需要访问 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/