如何在_Layout视图中访问UserProfile

2024-04-03

在我的 MVC 应用程序中,我有一个共享的 _Layout.cshtml 文件,用于显示用户的菜单

在该视图上,我想显示来自 UserProfile 实体的信息 - 使用 SimpleMembership 创建,因此链接到可以在 _Layout 页面中直接访问的 IPrincipal User。

所以我编写了一个扩展方法来调用我的 UnitOfWork ,如下所示:

    public static UserProfile GetUserProfile(this IPrincipal u)
    {
        IUnitOfWork uow = new UnitOfWork();
        return uow.UserRepository.GetUserProfile(u);            
    }

现在这可以工作了,但是味道不太好,因为我正在实例化 UnitOfWork 而不是注入它......

我有一个 BaseController 类,如下所示:

public class BaseController : Controller
{
    // NOT NECESSARY TO DISPOSE THE UOW IN OUR CONTROLLERS
    // Recall that we let IoC inject the Uow into our controllers
    // We can depend upon on IoC to dispose the UoW for us
    protected MvcApplication.Data.Contracts.IUnitOfWork _Uow { get; set; }
}

(我的一些代码基于这个答案:https://stackoverflow.com/a/12820444/150342 https://stackoverflow.com/a/12820444/150342)

我使用包管理器来安装 StructureMap,并且此代码在应用程序启动时运行:

public static class StructuremapMvc
{
    public static void Start()
    {
        IContainer container = IoC.Initialize();
        DependencyResolver.SetResolver(new StructureMapDependencyResolver(container));
        GlobalConfiguration.Configuration.DependencyResolver = new StructureMapDependencyResolver(container);
    }
}

据我了解,这会将我的具体 UnitOfWork 类注入到我的控制器中,并处理 UnitOfWork 的处置。

不幸的是,这就是我对 IoC 的理解,如果我想从控制器以外的地方访问 UnitOfWork,我不确定该怎么做 - 或者我是否可以将信息从控制器传递到 _Layout。我想将数据获取到 _Layout 页面,但我对如何从那里访问 UnitOfWork 或如何将 UnitOfWork 注入扩展方法感到困惑


将数据放入 ViewBag 中,然后让 _Layout 视图从那里提取数据。

你可以把这个放在你的BaseController

protected override void Initialize(System.Web.Routing.RequestContext requestContext)
{
    base.Initialize(requestContext);
    var u = requestContext.HttpContext.User;
    var data = _UoW.UserRepository.GetUserProfile(u);

    ViewBag.UserData = data;
}

在布局视图中渲染数据:

@ViewBag.UserData 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在_Layout视图中访问UserProfile 的相关文章

  • 如何在 Spring 3.1 中构造函数自动装配 HttpServletResponse?

    我有一个请求范围的 bean 并且需要访问 HttpServletResponse 和 HttpServletRequest 对象 我需要在构造函数中访问这些对象 因此属性自动装配不是一个选项 我做了以下事情 Component Scope
  • 创建 AoT 兼容的服务工厂

    我正在尝试为缓存服务创建一个服务工厂 主要要求是每次可以使用不同的字符串实例化单个服务 最终的结果会有多个cache每个服务都由唯一定义databaseName 每个缓存可以有一个或多个stores也由唯一定义storeName 其他服务将
  • 使用 AJAX 和 Jquery 自动完成功能填充表单数据

    我想使用自动完成所选项目来填写表单数据 我的自动完成工作正常 但我无法弄清楚如何通过从自动完成文本框中检索项目来填写表单数据 这是我的代码 HttpPost public JsonResult GetAutocomplete string
  • 使用 ASP.Net vNext 发送邮件

    一般来说 在传统的 ASP Net 和 Net 中 发送邮件是通过System Net Mail所在的类System dll 现在有了KRE vNext好像就没有了System Net Mail作为一个单独的包 参考 net453 框架在p
  • 如何在 Razor 中设置数字编辑器的最小值、最大值和默认值

    我有一个 int 值 我想将其渲染为数字 up down 其 id 为 Quantity 因此我在 razor 中执行以下操作 div class field label Html LabelFor m gt model Quantity
  • 有没有办法在 jqgrid treeGrid url 请求中传回附加数据?

    i am 使用 jqgrid 树视图 http www trirand com jqgridwiki doku php id wiki 3atreegrid我正在传回 json 响应 效果很好 我想将一些有关请求的附加信息传递回 GUI 并
  • 播种多对多数据

    您好 我正在尝试为我的项目创建一些种子 但我在将多对多关系数据播种到数据库时遇到问题 My database看起来像这样 in 教师技能 教师ID and Skill ID当然是他们的表的外键 My seeder看起来像这样 protect
  • CSS、Javascript 和图像的长度为零

    我正在尝试将 ASP NET MVC 1 0 Visual Studio 2008 项目移植到 ASP NET MVC RC 2 Visual Studio 2010 该项目 并且一直 在 IIS 7 上运行 动态内容 由控制器提供的所有内
  • 如何排列表格中的项目 - MVC3 视图 (Index.cshtml)

    我想使用 ASP NET MVC3 显示特定类型食品样本中存在的不同类型维生素的含量 如何在我的视图 Index cshtml 中显示它 an example 这些是我的代码 table tr th th foreach var m in
  • 将 HTML 表格导出到 Excel

    我在 ASP NET MVC 视图页面上有 HTML 表 现在我必须将该表导出到 Excel 1 我使用部分视图 Inquiries ascx 来显示数据库中的表数据 使用LINQ to Entity 2 我还使用了 UITableFilt
  • 使用 LINQ 和 ASP.NET MVC 更新多个表

    只是简单地说一下 我只是想寻求一些澄清 我希望通过一个 创建 操作来更新多个表 在尝试之前 我只是想知道是否可以简单地执行以下操作 db hdCalls InsertOnSubmit a db hdCustomers InsertOnSub
  • 如何将窗口注入到服务中?

    我正在用 TypeScript 编写一个 Angular 2 服务 它将利用localstorage 我想注入对浏览器的引用window对象到我的服务中 因为我不想引用任何全局变量 例如 Angular 1 x window 我怎么做 这目
  • 限制实体框架中子实体的数量

    底线在前 有没有一种简洁的方法可以限制可以属于实体框架中父级的子实体的数量 我现在使用的是4 3 1 问题 我正在开发一个 ASP NET MVC3 站点 它通过使用实体框架的数据访问层访问数据 我有一个 SearchList 实体 它与搜
  • jquery中如何使用load函数发送数据

    我想用 jquery load 函数发送字符串数据 但它没有发送 我的代码是 function dialog data function alert data var ph Org1 ph empty ph load FrontEnd Do
  • MVC 操作过滤器和多线程

    我目前遇到了操作过滤器的线程问题 在我的应用程序上 我使用 ActionFilter 来执行每个操作的跟踪 此跟踪将提供统计信息 例如调用的持续时间 并记录参数被派往行动 实际的跟踪实现 由其他团队完成 使用 IDisposable 对象
  • ASP.NET Core Tag Helper Checkbox 不保存未选中的值

    我正在使用标签帮助程序在 MVC 表单中添加一个复选框 div class form group div
  • PDF 在 Safari 中隐藏 Jquery Modal

    这是与我有关的事情this https stackoverflow com questions 24052681 pdf hide jquery modal in ie问题 在 IE 中 我在对话框中使用 iframe 解决了问题 所以它工
  • 为什么我收到“找不到编译动态表达式所需的一种或多种类型。”?

    我有一个已更新的项目 NET 3 5 MVC v2 到 NET 4 0 MVC v3 当我尝试使用或设置时编译出现错误 ViewBag Title财产 找不到编译动态表达式所需的一种或多种类型 您是否缺少对 Microsoft CSharp
  • javax.inject.Named 注释的用途是什么?

    我正在尝试理解javax inject包 我不清楚是什么javax inject Named注释应该用于 Javadoc 没有解释其背后的想法 Javadoc 位于http download oracle com javaee 6 api
  • 如何使用 ASP.NET Razor 语法应用 bootstrap v4 alpha 的表单输入验证类?

    因此 Bootstrap v4 alpha 对表单验证类进行了一些更改 现在 要将验证样式应用于表单输入 请将 CSS 类应用于父级div form group 我正在使用 ASP NET MVC4 编写一个网站 并试图弄清楚如何将此 CS

随机推荐

  • JAX RS,我的过滤器不起作用

    我的工作是 使用 JAX RS 和 Jersey 进行基于 REST 令牌的身份验证的最佳实践 https stackoverflow com questions 26777083 best practice for rest token
  • 开发 Excel Addin 时释放 COM?

    我知道在使用互操作时应该释放 COM 对象 开发和加载项 例如 Excel 时情况是否有点不同 这是我的一个循环 我很好奇是否Marshal ReleaseComObject是必要的 foreach var sheet in results
  • Regex / Preg:如果找到则不匹配

    我正在尝试做一些 PHP preg 但如果我想要一个没有任何东西的字符串 我似乎无法让它匹配 Example Hello My name is b Peter Jack b 如果找到 Peter Jack 的姓氏 则它将不匹配 但如果找到
  • 如何在 iOS 上发送短信而不需要用户同意?

    如何从 iOS 应用程序向某人发送文本消息 本地或通过使用 API 而无需他们事先与消息交互 该消息将被预先编写并通过点击屏幕发送 如果用户需要一次就可以了 但我需要一种发送消息的方法 而不必让用户每次都与他们的设备交互 例子 手机关机 我
  • 将值分配给 pandas 数据框值以获取另一列中的唯一值

    我有以下数据框 df pd DataFrame marks 40 60 90 20 100 10 30 70 students Jack Jack Jack Jack John John John John marks students 0
  • 如何使用 Python 从文本文件中绘制数据

    我有一个文本文件 其中包含来自连接到树莓派的传感器的近 50k 行数据 它看起来像这样 2014 07 16 15 57 35 536579 128 251 254 255 30 062 2014 07 16 15 57 37 763030
  • 在 Google Play 上发布新的生产版本而不影响 Beta 版

    我在 Google Play 商店中有一个生产应用程序 我还使用 Google Play 测试版功能向有限的群体发布了测试版 但是 如果我对生产应用程序进行更改 则需要重新构建并重新发布测试版应用程序 因为它会被新的生产版本覆盖 当我想在生
  • Jest TypeError:不是 Jest.mock 中的构造函数

    我正在尝试使用 jest 编写一个单元测试用例 并且需要模拟以下模式 我收到 TypeError 不是构造函数 用例 我的用例如下所述 我的组件 js import serviceRegistry from external service
  • 在 Windows 上运行在 Cygwin 中编译的 C++ 可执行文件

    The Idea我在 Cygwin 上使用 G 编译了一个 C exe 我希望能够通过 PHP 将该 exe 的输出放入我的 HTML 中 也就是说 假设我有一个 C 可执行文件 test exe 它输出 Hello World 运行时 那
  • 如何在自托管环境中对 ASP.NET Core 中的静态内容进行 gzip

    使用自托管环境发布 ASP NET Core 网站时 是否有方法提供 gzip 静态内容 编辑2016 11 13 还有另一种方式来提供 gzip 压缩文件来替代步骤 2 和 3 它基本上是相同的想法 但是有一个 nugetpackage
  • Jackson ObjectMapper:日期序列化和反序列化问题

    我想禁用宽松选项中Jackson Deserializer严格反序列化日期字段 基本上 我希望下面的代码抛出异常而不是 解析33 Aug 2016 as 02 Sep 2016 1 订单 java package com test date
  • 如何在项目中任意ViewController中全局访问Class中的数据

    我是斯威夫特的新手 目标 访问全球数据 如何使用Swift实现全局临时存储 使用下面的类来存储数据 In C 1 我使用具有静态属性的类 Class TransactionData public static DateTime dateTi
  • Python 2.7 - ttk 模块似乎无法在 Windows 8.1 中工作

    我的应用程序的 GUI 是Tkinter基于并且它非常实用 我一直在尝试使用 ttk 让它看起来更现代 我用Python 2 7在 Windows 8 1 中 输入ttk没有错误和编码 包括ttk在脚本中运行没有错误 然而 生成的界面看起来
  • android:删除ldpi/mdpi文件夹的陷阱

    我想知道删除我的 android 项目上的 ldpi mdpi hdpi 文件夹有什么陷阱 我可以只复制可绘制文件夹中的所有图像吗 我确实看到了以下关于 android UI 开发的链接http developer android com
  • SSL 套接字连接超时

    如何在 Java 中配置 SSL 套接字的连接超时 对于普通套接字 我可以简单地创建新的套接字实例 而无需使用任何目标端点new Socket 然后调用连接 SocketAddress端点 int超时 http download oracl
  • struts2 异步操作

    希望使用带有 Serlvet 3 0 异步支持的 Struts2 我的第一个方法是只处理写入操作中的输出流并返回 null 然而 这会返回 404 资源不可用 我试图在 struts 操作中调整 Bosh servlet 使用 Servle
  • 更新应用程序的最佳方式

    我正在使用 WPF 技术开发游戏 我想每三天向游戏添加新功能 更新的大小对我来说很重要 我的游戏需要联网才能启动 就像网络游戏一样 另一个挑战是更新的大小 最重要的注意事项 我需要更新程序不需要停止 你的建议是什么 clickonce 是个
  • 如何将 XYSplineRenderer 图中的正方形形状更改为点

    In JFreeChart XYSplineRenderer Graph I need to display small dots instead of small squares to display XY coordinates How
  • 修改VCL组件代码

    我需要更改组件中的功能 当您收到 您无法覆盖此 消息 或者您需要更改私有方法中的代码 基类中不存在该方法 消息 导致组件无法下降时 您该怎么办 如果我遇到这个问题 我首先尝试从组件或其 CustomXXX 祖先继承 看看是否可以解决问题 如
  • 如何在_Layout视图中访问UserProfile

    在我的 MVC 应用程序中 我有一个共享的 Layout cshtml 文件 用于显示用户的菜单 在该视图上 我想显示来自 UserProfile 实体的信息 使用 SimpleMembership 创建 因此链接到可以在 Layout 页