【问题标题】:Handling site wide data in MVC Razor在 MVC Razor 中处理站点范围的数据
【发布时间】:2011-06-07 05:36:18
【问题描述】:

我在几个地方看到过这个问题,通常答案是“使用 ViewBag”,我认为这不适合我们的场景。

我们有一个会员站点,它具有共同的属性(例如,帐户 - 包含用户的帐户设置),我想在视图和 _layout.cshtml 中使用它(例如,允许用户更改配色方案) .

在视图中,我们从基本视图模型继承,但我们如何才能在标准页面中访问这些数据,例如关于我们等没有任何关联的视图模型?我尝试创建一个局部视图,将数据传递到它的控制器中,但这没有用

【问题讨论】:

  • 如果您的架构需要视图模型,为什么不创建一个?
  • 我们有一个用于各种视图的基本视图模型,但我不清楚的是公共页面(例如,在默认的 MVC 项目中,这些页面是主页、关于我们和联系我们) .使用 ViewModel 并没有“感觉”正确

标签: asp.net-mvc-3 razor


【解决方案1】:

您的主要选择是:
1. 考虑实施配置文件提供程序 - 然后设置随处可用,使用操作过滤器
2. 使用您自己的自定义上下文分配给当前请求/用户
3. 对没有它们的页面使用基本控制器/基本视图模型
4. 使用全局动作过滤器
5. 查看数据/会话
详情请见:
ASP.NET MVC 3 layout ViewBag data across all child views

如果您已经有这个工作并且需要在“关于我们”页面中访问并且不想要另一个视图模型(为什么不呢?)那么操作过滤器将是可行的方法 - 除非这是一个典型的 aspx 页面在这种情况下,您将没有上述 3/4 选项。

【讨论】:

  • 好的,谢谢 Adam,并不是我不想要另一个 ViewModel,只是感觉不对,会走那条路。
  • 不要使用基本控制器......如果使用 MVC 3,请使用动作过滤器
  • 只是提供了一个主要选项列表,上面的列表中提供了操作过滤器。有些人可能出于其他原因更喜欢控制器(例如,在其中缓存代码,因此与单个控制器实例相关的共享功能的集中位置)
猜你喜欢
  • 1970-01-01
  • 2010-09-14
  • 1970-01-01
  • 1970-01-01
  • 2021-06-08
  • 1970-01-01
  • 1970-01-01
  • 2013-06-20
  • 2013-10-06
相关资源
最近更新 更多