TextboxFor readonly时发布值

时间:2013-01-30 21:30:42

标签: asp.net-mvc-3

我正在使用视图中的html帮助器方法创建一个TextBox。

@Html.TextBoxFor(m => m.Address, new { @readonly = "readonly" })

我希望此文本框在发布时保留其值,即使恶意用户尝试更改它。

我正在IE中测试我的代码,并且可以轻松使用开发人员工具删除“readonly”属性。

MVC3中是否有任何实现在发布时保留文本框的值?我试图避免去数据库获取原始值。

2 个答案:

答案 0 :(得分:4)

  

MVC3中是否有任何实现在发布时保留文本框的值?

不,没有。这是不可能的。如果您已将值发送到客户端,则无法再信任它。正如您已经发现,用户更改隐藏和只读字段的值是微不足道的。因此,如果用户不想修改这些值,则它们甚至不应成为HTML的一部分。你应该将它们保存在服务器上。好吧,实际上你可以将它们显示为只读字段只是为了向用户提供信息,但是当提交表单时,永远不要使用此值,而是使用存储在服务器上的实际值(可能在数据库或您使用的任何持久存储中)

答案 1 :(得分:0)

为什么不尝试序列化您要保留的所有内容,使用服务器只知道的密钥对其进行加密,并将加密值存储到隐藏的输入中。您仍然可以在表单控制器中显示未加密的值,但在服务器端,您将使用通过隐藏输入发送的加密值进行实际处理。这种方式,如果恶意用户更改标准输入,这没关系,因为你将使用加密副本..我知道它的一些响尾蛇,它类似于web表单如何跨帖子维护viewstate ..干杯< / p>