对于网站,请考虑以下情况:
依旧......
目前,在步骤5中,我将使用该ID再次调用Web服务以获取所需的复杂对象。
有没有正确/有效的方法,没有使用TempData / ViewBag / ViewData,所以我可以在步骤2中重复使用复杂对象?
编辑: 也不允许进行会话。
答案 0 :(得分:1)
通常,对于web application
,根据您的需要,可以有多种选项来存储复杂对象。我认为没有 BEST 的做法,只有最合适的方式,每个解决方案都会附带PROS和CONS
服务器端
会话(我知道你说不能使用会话,但我只是想把它包括在内):首先想到的选项,适合大多数网络应用。由于现代网络开发更多是 STATELESS ,很多人都希望不惜一切代价避免使用Session
。但是,有一些特定的基础架构配置可支持 {STATELESS 应用程序中的会话,例如 distributed session
或 sticky session
或您可以将会话保存在dedicated server
或database
。
另一个专用服务器(在有人问之前,我把它放在SERVER SIDE部分,即使它是另一个SERVER,但对我来说,无论我们控制什么,都是SERVER SIDE < / em>):你可以在这里选择一些选项,第一个选项可能是设置缓存服务器(Redis?)和使用密钥检索/保存(类似于会话),或者你可以简单地编写一个应用程序来检索/使用自己的逻辑保存。
数据库:不是一个明显的选择,但数据库确实支持这种要求
其他内存中选项(TempData,ViewBag等):
客户端
建议的解决方案
我希望我能正确理解您的问题,但在我看来,您不应该存储复杂对象,只需将复杂对象的ID存储在您选择的位置,并在每次查询时进行查询需要这个对象。这样您的对象始终是最新的,并且您不会浪费资源来存储复杂对象。
希望它对你有所帮助。
答案 1 :(得分:0)
如果要将对象投影到某个视图,那么忘记任何存储(TempData / ViewBag / ViewData / Session)然后将同一个对象发布到另一个控制器,可以重新构建对象的最佳方法是将对象的属性存储为隐藏的<input>
控件。