2010-09-15 45 views
0

在标准的ASP.NET webforms项目中,如果我在页面上有多个用户控件需要相同的数据,我倾向于将第一个用户控件HttpContext.Current.Items集合中的数据,因此它可用于所有其他数据。为ASP.NET MVC控制器共享“每个请求”存储

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

感谢

编辑:

基本上ViewReults这里是出现不止一次在页面上的内容范畴,所以我一直在寻找查询数据库,一旦获得的所有内容集合(当第一个内容区域被覆盖时)而不是针对每个内容区域的单独查询。认为它会加快速度。

进一步信息:

只是要清楚,内容控制器的动作被重复使用从由一个额外的“主”控制器所服务的网页内的“的RenderAction”。因此,我不认为我可以使用ViewData(或控制器类本身的任何其他属性),因为它不在同一控制器的不同实例之间共享。

我想我必须全部使用诸如this one之类的方法来回退HttpContext。

+0

在ViewResults上做一下详细介绍,以及你在做什么? – 2010-09-15 13:56:41

+0

补充信息,希望有道理.. – Nick 2010-09-15 14:45:55

+0

它是什么样的数据?它是否对用户有用? ist安全性是否相关? – 2015-03-13 12:21:20

回答

1

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

+1

想是这样,但我想直接访问的HttpContext从控制器不建议用,因为它使单元测试更难? – Nick 2010-09-15 14:39:56

+0

猜猜我走上这条道,这就是我想要去了解它,现在如果又上来 – Nick 2015-03-13 13:51:22

0

为什么你不把这个内容放到你的ViewModel中并让所有的控件都使用它?这是View模型的一个非常标准的用法。

+0

是的方式,但内容领域(由内容控制器服务)可以在网站上的任何地方出现,所以我不得不把内容集合在一个基础模型本身是由许多不同的控制器,否则有不同的模型要求的服务的页面。 – Nick 2010-09-15 16:58:08

+0

这听起来像是计算机[“SomeSharedKey”]的适当使用。那么你不需要基础视图模型。 – Ryan 2010-09-15 19:41:38

相关问题