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;ihash=((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+“”);
});
});