如何在不使用隐藏字段的情况下检测表单字段是否已更改

时间:2011-04-26 15:59:51

标签: c# validation asp.net-mvc-3

我正在使用ASP.NET MVC 3,并且需要检测服务器端的表单字段是否已更改。我知道使用隐藏字段的技巧,但我想知道是否有办法通过使用API​​来实现它?

基本上,我有我的模型的编辑屏幕,其中一个字段是可以指定的可选ID。如果指定了该字段,我必须确保它是唯一的(没有其他模型具有它)。因此,在编辑控制器上,我想运行验证,但仅在该字段已更改时才会运行。

请注意,我不需要知道以前的值与新值,只要字段值已更改。

2 个答案:

答案 0 :(得分:4)

您必须在某处保留旧值的副本,然后进行比较。您可以将其存储在视图模型中。

答案 1 :(得分:4)

确实没有'脏'标志 - MVC实际上更接近于“网络的工作方式”来重用该语句。发送的所有内容都是名称值对。没有其他的。 MVC的模型绑定器只是将这些名称与您的对象进行匹配 - 因此,为了真正检测到更改,您必须在发布时验证真实数据源或在表单上传递比较值 - 在这种情况下 - 最好是哈希到避免伪造。