如果进行了更改,则提示保存数据

时间:2010-12-10 19:52:20

标签: asp.net .net-4.0 messagebox

我正在使用asp.net,如果他们对网页进行了更改,我需要向用户显示提示,并且他们不小心关闭了浏览器。

该页面可以是“编辑个人资料”到“提交索赔”等任何内容。

如何显示消息框,确保仅在进行了更改时显示消息框(而不是用户进行更改,然后撤消更改,并关闭浏览器)

3 个答案:

答案 0 :(得分:1)

如果不理解页面上的内容,甚至很难触摸。如果它是一些控件,您可以在页面加载时捕获值并存储它们,以便稍后进行比较。如果它是一个复杂的页面,您需要与整个视图状态进行精确比较。

通常,您可以通过在第一次进行任何更改时将布尔值设置为TRUE来处理此类情况,并忽略用户将其更改回来。如果您只是试图避免意外不保存数据,那么用户应该足够聪明,知道他们“撤消”了他们的更改。

答案 1 :(得分:1)

我过去所做的是使用一些客户端脚本,在onbeforeunload事件期间执行此检查....

var showPrompt=true;
var isDirty=false;
var hidePopup=false;

    function onBeforeUnload() {
        if (showPrompt) {
            if (isDirty) {
                if (hidePopup || confirm("Click ok to save your changes or click cancel to discard your changes.")) {
                    doSave();
                }
            }
        }
        showPrompt = true;
        hidePopup = false;
    }
  • 单击锚标记时,可以将ShowPrompt设置为false,该标记不会导航您离开页面。例如<a onclick='showPrompt=false' href='javascript:doX()'/>
  • isDirty可用于跟踪何时需要保存的内容。例如,您可以执行类似$("input").onchange(function(){isDirty=true;});的操作。要跟踪撤消,您可能需要使用一个函数来替换isDirty,该函数会检查上次保存状态的当前状态。
  • HidePopup允许我们在不确认用户的情况下强制保存。

答案 2 :(得分:1)

您可以使用javascript执行此操作。请参阅this question以及前两个答案中的任何一个。