Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net MVC2中隐藏字段的替代方案_.net_Asp.net Mvc 2 - Fatal编程技术网

.net MVC2中隐藏字段的替代方案

.net MVC2中隐藏字段的替代方案,.net,asp.net-mvc-2,.net,Asp.net Mvc 2,我有一个viewModel,其中包含一个字符串,该字符串在传递到局部视图之前填充。我需要能够得到的数据时,表格是张贴回来。目前,我已经创建了一个隐藏字段并将数据绑定到它。然后在发回时,我可以从表单集合中获取数据 这不是我想要的。我更希望数据完全隐藏在视图之外。对于我必须遵守的框架来说,使用会话并不是一个真正的选项 我有没有别的选择 谢谢这里需要澄清一点:重要的是数据对用户不可见,还是不可访问 如果要使其不可见,可以将数据存储在cookie中,而不是隐藏字段中。当您在服务器上读取它时,您还将coo

我有一个viewModel,其中包含一个字符串,该字符串在传递到局部视图之前填充。我需要能够得到的数据时,表格是张贴回来。目前,我已经创建了一个隐藏字段并将数据绑定到它。然后在发回时,我可以从表单集合中获取数据

这不是我想要的。我更希望数据完全隐藏在视图之外。对于我必须遵守的框架来说,使用会话并不是一个真正的选项

我有没有别的选择


谢谢

这里需要澄清一点:重要的是数据对用户不可见,还是不可访问

如果要使其不可见,可以将数据存储在cookie中,而不是隐藏字段中。当您在服务器上读取它时,您还将cookie标记为过期。这有点像黑客,但它可以满足您的要求——将数据存储在客户端,但不存储在标记中

如果您想使其不可访问,您可以对其进行模糊处理(例如,散列或加密),并仍将其存储在隐藏字段(或cookie,如上所述),但要知道,由于您仍向用户提供部分信息,因此访问数据并非完全不可能

如果重要的是将数据存储在用户无论如何都无法访问的位置,但您无法在服务器端访问数据,那么您就倒霉了。您发送给客户端的任何内容,足够聪明的用户都可以阅读。

保持无状态 如果可能的话,将您的请求保持完全无状态。我会避免在会话中存储数据。我宁愿加密/混淆数据并将其放入隐藏字段/cookie中,也不愿引入状态。这会让你以后更难受。相信我


您能再解释一下为什么需要保留此状态吗?

也许可以发布一些控制器方法的代码?再解释一下。。。此表单适用于忘记密码类型的场景,其中用户需要为所选问题的答案提供匹配的字母。我需要能够存储字符位置(每次运行时都是随机的)。表单上选定的字母将与相应的随机字符位置一起发回,在本例中作为隐藏字段。@StuffandBlah:在隐藏字段/cookie中用逗号分隔的数字就可以了。不会向用户透露任何不稳定的信息。逗号分隔的数字仅用于对照答案中的字母位置检查每个字母。但请注意这一点。忘记密码的情况可以通过发送带有密码重置链接的电子邮件来完成,该链接仅在ie.1天内有效。没有披露任何数据。数据库中也没有存储易失性反转信息。甚至连问题和答案都没有。