Asp.net mvc 共享';根据请求';ASP.NET MVC控制器的存储

Asp.net mvc 共享';根据请求';ASP.NET MVC控制器的存储,asp.net-mvc,asp.net-mvc-2,controller,Asp.net Mvc,Asp.net Mvc 2,Controller,在标准ASP.NET webforms项目中,如果一个页面上有多个用户控件需要相同的数据,我倾向于让第一个用户控件将数据放在HttpContext.Current.Items集合中,以便其他所有控件都可以使用 对于在同一页面上多次使用的MVC控制器上的ViewResult,与此最接近的等价物是什么 谢谢 编辑: 基本上,这里的ViewReults是一个页面上多次出现的内容区域,因此我希望查询一次数据库,以获取页面所有内容的集合(当第一个内容区域被删除时),而不是对每个内容区域进行单独的查询。我想

在标准ASP.NET webforms项目中,如果一个页面上有多个用户控件需要相同的数据,我倾向于让第一个用户控件将数据放在HttpContext.Current.Items集合中,以便其他所有控件都可以使用

对于在同一页面上多次使用的MVC控制器上的ViewResult,与此最接近的等价物是什么

谢谢

编辑:

基本上,这里的ViewReults是一个页面上多次出现的内容区域,因此我希望查询一次数据库,以获取页面所有内容的集合(当第一个内容区域被删除时),而不是对每个内容区域进行单独的查询。我想这会加快速度

更多信息:

为了清楚起见,contentcontroller操作在由另一个“main”控制器提供服务的页面中被反复用作“RenderAction”。因此,我认为我不能使用ViewData(或控制器类本身的任何其他属性),因为它不是在同一控制器的不同实例化之间共享的


我想我还是不得不求助于HttpContext,毕竟使用了一种方法,例如。

“在同一页面上多次”意味着相同的请求,这意味着您仍然可以使用HttpContext.Current.Items集合。

为什么不将此内容放在ViewModel中,让所有控件都使用它呢?这是视图模型的标准用法。

详细说明ViewResults以及您正在使用它们做什么?添加更多信息,希望有意义。这是什么类型的数据?它是否依赖于用户?ist安全相关吗?@Malcolm-很久以前,我完全不知道!)猜测我可能使用了HttpContext项目集合。猜测是这样,但我认为不建议直接从控制器访问HttpContext,因为这会使单元测试更加困难?猜测我采用了这条路径,如果它再次出现,我现在会这样做是的,但是内容区域(由内容控制器提供服务)可以出现在网站的任何地方,因此我必须将内容集合放在一个基本模型中,因为页面本身由许多不同的控制器提供服务,这些控制器具有不同的模型要求。这听起来像是ViewData[“SomeSharedKey”]的一个适当用法。这样就不需要基础视图模型。