我的工作由几个页面中,用户数据填充的CRUD ASP.NET WebForms的Web应用程序。 我的客户不希望将实体存储在页面之间的数据库中,直到用户点击完成最后一页上(因各种原因)。 哪些选项是否有传播的页面,哪个是最不坏的之间的数据填充? 从我读我见过的ViewState和Server.Transfer的都可以使用。 任何其他选项,最好少用魔法串和多种类型的安全数据绑定到实体对象?
Answer 1:
使用ViewState
将会显著增加您的发送沿着电线的数据量,因为所有的Viewstate
数据序列化为形式隐藏输入,从而为你添加对象的HTTP请求-响应将会显著增长。
有没有灵丹妙药在此真的。 如果你的数据不是太复杂,我的值存储在查询字符串。 如果你的对象越来越复杂,大,要保持类型安全我会使用Session
,但要记住自己后清理!
另一选择是使用MVC模式和存储值它采用隐藏式输入的自我形式。 这意味着你不必担心清理会话如果用户虫子尽管有一半的方式,但它也让你的查询字符串干净。
认为那所有的选项, 查询字符串 , 视图状态(不这样做), 会话或隐变量 。
好了,所以你必须seraialise你的数据,所以你不能坚持的上下文。 这不是serialiseable所以上面是你的选择:
他们每个人都有正面和负面,
- 视图状态(inefficent,而且易于使用)
- 查询字符串(efficent但不切实际的大型数据集和编辑)
- 会话(增加了服务器的负载,需要清理,但可以让你坚持在服务器上的数据只)
- 隐变量(从用户但比视图状态更有效隐藏需要大量的隐藏的输入为每个属性)
任你选!
Answer 2:
你可以存储在客户端应用程序中使用的所有对象的Session
当用户点击完成您发送这些对象的服务/方法,你可以将它们转换成实体,然后将它们提交到数据库,然后。
Answer 3:
使用memcached。
有吨的在互联网上的例子。
试试这个 :
实现使用Memcached的分布式缓存
文章来源: How to save state across requests for an entity in ASP.NET without saving to database using EntityFramework?