2012-01-09 129 views
0

我可以使用:@ Html.HiddenFor隐藏窗体上的字段,但是,仍然可以使用“查看源代码”查看隐藏字段的值。mvc3 .net - 有没有办法在视图中完全隐藏隐藏字段?

MVC3有没有办法隐藏视图源中的隐藏字段 - 我想完全隐藏用户的主键,但仍然通过模型将它从视图传递给控制器​​,形成。

赞赏任何代码片段或链接到一个例子。 谢谢

回答

1

好吧,把简单的号码。如果您打算通过表单发送密钥,则无法从源中隐藏数据。

由于您没有提及要发布的主要关键字或哪种表单数据,因此很难提供任何其他建议。如果它是用户的主键,那么当然可以使用登录会话,而不是通过表单发送密钥,但在其他任何情况下,恐怕必须通过源代码揭示主键。

0

您不能从源中隐藏字段。

但在某些情况下,您可以尝试执行其他操作,例如不将ID传递给视图。将其保存在控制器端,并在表单提交中使用它。当然你需要小心,但是它可以用TempData或ViewData来实现。这里有个提示http://haacked.com/archive/2007/12/21/asp.net-mvc-helpers-for-repopulating-a-form.aspx

+0

感谢您的反馈。 我以为你可能无法做到这一点。如果表单的用户可以在源代码中看到主键userId,这是不是安全问题? – user1079925 2012-01-09 14:44:43

+0

我想说的是,揭示特定记录的某种标识符是正常的,但这也取决于您正在使用的数据类型。如果这可以说,用户想要购买的图书的BookId - 没有理由向他隐藏该ID。如果这是更敏感的东西,你可能想掩盖你的ID与SHA1哈希加上记录所有权/权限控制 – torm 2012-01-09 15:10:45

+0

谢谢@torm,我想我可能会看看会话,看看我是否可以在那里持有userId,然后让控制器使用id的会话。 – user1079925 2012-01-09 15:14:22

0

如果你需要保留跨多个请求的信息,那么利用服务器端的TempData集合,因为它是由会话支持的,但其设计恰恰是为了在短时间内保存信息。或者,如果您必须通过隐藏或其他高度为零的HTML将数据推送到客户端,则使用对称加密或至少base64编码(非常穷的人的方法使其远离好奇的眼睛)对其进行加密。