[英]Best way to store an object in the view for state persistence in MVC 3?
我正在使用ASP.NET MVC 3,我需要在请求之间维护一个C#对象。 它维护一些服务器端状态信息,这对于这个问题并不重要。 目前,此对象被序列化为会话,然后在每个请求时被拉出。
这种方法的问题是该对象特定于会话,但我希望它特定于每个请求。 因此,在浏览器中打开第二个选项卡基本上会有自己的对象,而不是与第一个选项卡共享同一个对象,因为它是同一个会话。
所以显然我需要将这个对象存储在页面上并将其与请求一起传回。 我想知道最好的方法是什么。 客户端不需要此对象中的信息,并且此对象中的数据不是敏感数据,因此我不打算阻止访问者查看它。 我只是想知道在请求之间存储此对象的最佳方法是什么。 是否有一种简单的方法可以将C#对象序列化到视图中,比如在隐藏字段(类似于Web窗体viewstate)中,然后在每个请求中将其取回?
您可以使用Futures项目中的Html.Serialize。 您可以通过Install-Package Mvc3Futures获取它
我在c#中实现了一个版本的Facebook BigPipe,我使用HttpContextBase Items集合在请求之间存储每个单独的对象。
var someCollection = (List<T>)ViewContext.HttpContext.Items["SomeCollection"];
因此,另一种解决方案 - 尽管是一种解决方法 - 将对象存储在键值对中作为会话状态的一部分,并将该键存储为隐藏字段。
thingToStore = new KeyValuePair<string, YourType>("key1", yourObject)
。 密钥可以是任何东西都是唯一的,因此您可以根据您提供的密钥生成器注入对象持久性类型。
无论如何,这是做到这一点的一种方式。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.