我如何实现“;视图状态”;在复合控件中键入解决方案,该控件还使用http处理程序

本文关键字:解决方案 控件 处理 程序 http 复合控件 实现 何实现 视图状态 | 更新日期: 2023-09-27 17:59:07

环境:ASP.net 4.5,Webforms

我有一个基本上由两个元素组成的复合控件:

  1. 用户看到的内容和与之交互的内容
  2. 用于向数据库发送数据的隐藏输入

因此,基本上,该控件做了很多与问题无关的事情,但它有几个按钮和操作,用户可以单击这些按钮和操作来调用http处理程序,http处理程序反过来返回响应,并使用JavaScript更新隐藏输入字段中的值。

该页面还有其他导致回发的控件,因此我通过使用viewstate来保留隐藏输入的值。

问题是,任何足够精明的人都可以使用JavaScript来更改输入的值,并将数据发送到数据库。

我知道httphandler是无状态的,但我正在寻找解决方案。我不想使用隐藏的输入,而是想将值存储在"视图状态类型"解决方案中,因为在客户端中无法进行干预。

因此,在我的http处理程序返回响应之前,我想通过JavaScript将当前正在更新的内容存储在服务器本身的隐藏输入中。

我读了一些关于缓存的文章,但不确定最佳方式。隐藏输入中的值只是一个值的分隔字符串,这些值最终被发送到存储过程。

我如何实现“;视图状态”;在复合控件中键入解决方案,该控件还使用http处理程序

一种方法可能是完成您现在所做的一切,但不是将HTTP处理程序的响应作为明文发送,而是将其作为加密文本发送回,或者对数据进行签名,以便在将其发送回服务器时验证其未被篡改。

使用像缓存或会话这样的服务器端存储机制并不理想,因为它增加了在完成时清理数据的复杂性,以及在处理过程中访问单独页面的复杂性,这会使数据无效。

我使用WebForms已经有一段时间了,但我认为您可以通过覆盖复合控件上的某些类来插入视图状态体系结构。

编辑:一个快速的谷歌发现了这一点——它看起来很合理,但正如我所说,已经有一段时间了。希望能有所帮助。

相关文章: