不使用javascript检查表单数据的更改

时间:2017-12-06 13:49:33

标签: javascript c# asp.net-mvc

我目前使用以下javascript来检测表单中的更改。

outputdir="/path/to/video/monthly/"

for file in "$outputdir"*.mp4
do

echo $file

done

我现在需要包括是否在对控制器的调用中进行了更改,这意味着该值不能长时间存储在javascript中,因为这是客户端。

2 个答案:

答案 0 :(得分:1)

  1. 将表单数据发送到服务器
  2. 在服务器端加载来自DB的当前数据
  3. 比较并测试更改

答案 1 :(得分:1)

你有几个选择......

1。使用模型的两个实例构建一个视图模型。一个是“原始”实例,一个是“已更改”实例。将“原始”字段绑定到表单中的隐藏输入,并将“已更改”字段绑定到普通表单元素。

然后,当表单发布到服务器时,控制器操作的输入将有两个要比较的实例。如果“已更改”值与“原始”值不同,则用户更改了某些内容。

注意但是用户可以仍然可以根据需要更改隐藏的输入。这不是安全措施,但如果“安全”不是此处的问题,则可以是有效措施。

2. 保持您的视图和控制器交互不变,但是当数据发布到控制器时,您将使用该记录中的标识符从数据库中获取原始数据。 / p>

使用已发布的模型和数据库获取的模型,比较两者。如果值不同,则用户改变了一些内容。

注意然而,这不包括竞争条件。 另一个用户可能会更改数据库值,因为此模型最初显示给用户。您可以通过添加数据更改时间戳来解决这个问题,但是除非您保留旧记录的审核副本,否则可能不足以告诉您更改了哪些数据。其复杂性迅速升级。

这是两个选项之间的权衡,其中一个选项满足系统的实际需求,具有可接受的缺点。