加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 在ASP.NET MVC中的回发之间保留复杂数据

发布时间:2020-12-16 03:18:59 所属栏目:asp.Net 来源:网络整理
导读:我正在开发一个ASP.NET MVC 2应用程序,它连接到一些服务来进行数据检索和更新.这些服务要求我在更新数据时提供原始实体以及更新的实体.这样做可以改变跟踪和乐观并发.服务无法更改. 我的问题是我需要以某种方式在回发之间存储原始实体.在WebForms中,我会使用
我正在开发一个ASP.NET MVC 2应用程序,它连接到一些服务来进行数据检索和更新.这些服务要求我在更新数据时提供原始实体以及更新的实体.这样做可以改变跟踪和乐观并发.服务无法更改.

我的问题是我需要以某种方式在回发之间存储原始实体.在WebForms中,我会使用ViewState,但从我读过的内容来看,这就是MVC.原始值不必是防篡改证明,因为服务将它们视为不可信.实体将是(最大)1k,它是一个内联网应用程序.

我提出的选择是:

>会话 – 排除 – 将实体存储在会话中,但我不喜欢这个想法,因为没有计划在会话之间共享会话
> URL – 排除 – 数据太大
> HiddenField – 将序列化实体存储在隐藏字段中,可能使用加密/编码
> HiddenVersion – 实体上有一个(SQL)版本字段,我可以放入隐藏字段.然后在保存中,我从服务中获取“原始”实体并比较版本,执行我自己的乐观并发.
> Cookies – 像3或4,但使用cookie而不是隐藏字段

我倾向于选项4,尽管3会更简单.这些有效的选择还是我走错了路?有没有更好的方法呢?

解决方法

如果您将其存储在会话中,则需要确保在实现Web场时正确加载会话.

我们现在有(完全)相同的问题,我们决定要实现存储库模式并将其链接到cookie.

然后,如果这成为一个问题,我们可以简单地插入会话管理器,数据库管理器或其他任何东西,由于存储库模式,我们的代码甚至不需要知道.

我们对隐藏字段的想法进行了修改,但它感觉太像ViewState,我们都在WebForms中讨厌它,所以这个想法被废弃了.但不仅仅是因为我们讨厌观看状态.按Ctrl F5时出现问题.内容将被清除,然后你做什么?

所以在这一点上它的存储库模式带有一个可能会改变的cookie,但实现本身就可以改变.

编辑

我们还决定不使用隐藏字段,因为它们太容易对它们进行更改,因此您需要从服务器执行一些令牌内容以确保它不会被篡改.

隐藏的字段只是增加了本质上应该是一个非常简单的问题的复杂性.

至少那是我们对此事的看法.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读