2

我有一个模型:

 public class Attribute
 {
    public int Id { get; set; }
    public string Key { get; set; }
    public string Value{ get; set; }
 }

假设我的视图将显示@model IEnumerable<MyCustomer.ViewModels.Attribute>,我想EditorFor为我的键和值创建一个,但我只想在回发后保留我的 ID,而不将其放入回发控件中。我怎样才能做到这一点?我知道我可以把它放在一个隐藏的地方,但一个隐藏的可以修改,我不确定这是最安全的事情。我正在向我的视图传递一个新的 [] 属性,并且需要预设 Id

4

2 回答 2

2

以下帖子通过为隐藏字段创建值的安全哈希来提供解决该问题的方法。

该帖子还链接到一篇文章,其中包含 SecuredValueHtmlHelper 的源代码,这听起来正是您所需要的。

防止更改隐藏字段

于 2012-12-12T22:10:40.777 回答
0

我怎样才能做到这一点?

HTML 的工作方式没有奇迹。无论您在 HTML 表单中输入什么内容,您都可以在回发时返回。无论你省略什么,你都会松懈。

所以你有几种可能性:

  • 将值存储在 ASP.NET Session 变量中,以便以后检索。
  • 使用回发时发送的 Key 和 Value 属性来查询您的数据存储区和 Id(这仅在 Key/Value 对是唯一的并且在您的数据存储区中具有相应的 Id 属性时才有效)。
  • 将 Id 属性的值存储在可以在回发时检索的加密 cookie 中。您可以使用这些FormsAuthentication.Encrypt/Decrypt方法。
于 2012-12-12T22:00:39.673 回答