Asp.net mvc 4 如何检查表单数据是否已修改?
我有一个非常复杂的表单,我不想仅仅因为有人进入了更新页面就进行所有的数据库查询 我如何知道表单中的内容是否已被修改Asp.net mvc 4 如何检查表单数据是否已修改?,asp.net-mvc-4,Asp.net Mvc 4,我有一个非常复杂的表单,我不想仅仅因为有人进入了更新页面就进行所有的数据库查询 我如何知道表单中的内容是否已被修改 我不使用knockout.js,也不想实现它。您可以使用javascript。例如,呈现表单后,您可以计算校验和,然后在提交表单之前重新计算该校验和并比较两个值。然后,您可以设置隐藏字段的值,以便在将表单提交到服务器时,您可以知道是否修改了某些内容: String.prototype.hashCode = function() { var hash = 0; if
我不使用knockout.js,也不想实现它。您可以使用javascript。例如,呈现表单后,您可以计算校验和,然后在提交表单之前重新计算该校验和并比较两个值。然后,您可以设置隐藏字段的值,以便在将表单提交到服务器时,您可以知道是否修改了某些内容:
String.prototype.hashCode = function() {
var hash = 0;
if (this.length == 0) return hash;
for (i = 0; i < this.length; i++) {
char = this.charCodeAt(i);
hash = ((hash<<5) - hash) + char;
hash = hash & hash;
}
return hash;
};
$(function() {
var $form = $('form');
$form.data('checksum', $form.serialize().hashCode())
$form.submit(function() {
var initialChecksum = $(this).data('checksum');
var currentChecksum = $(this).serialize();
var isDirty = initialChecksum != currentChecksum;
$('#isDirty').val(isDirty);
});
});
String.prototype.hashCode=function(){
var散列=0;
如果(this.length==0)返回哈希;
对于(i=0;i hash=((hash可能与一些jQuery一起使用。为字段分配一些类并触发更改事件,并将更改字段的名称放在某个隐藏字段中,然后您可以在服务器端拥有已更改的字段
<input type="hidden" id="changedNames" name ="changedNames" />
$(function () {
$('.observe').change(function (e) {
var thisName = $(this).attr('name');
$('#changedNames').val($('#changedNames').val() + thisName + " ");
});
});
$(函数(){
$('.observe').change(函数(e){
var thisName=$(this.attr('name');
$('changedNames').val($('changedNames').val()+thisName+“”);
});
});