Asp.net webforms自动保存

时间:2015-03-23 18:31:47

标签: asp.net

我知道这可能是一个基本问题,但我是Asp.net webforms的新手,所以请耐心等待。

我在页面上有一个冗长的表单,我想在用户输入字段时进行自动保存,或进行选择。问题是,我能在网上找到的所有功能都是自动保存,可以在计时器上运行。我希望它会在用户进行编辑时保存。另外,我希望将正在编辑的单个表单元素发送到服务器,以避免每次都返回整个页面。

我已经读过我应该使用web服务来实现这一目标,但由于我想自动保存单个项目而不是计时器上的整个表单,我将如何设置web服务来实现这一目标?我是webservices的新手,我想知道要读些什么。任何链接都表示赞赏。

此外,使用asp.net验证控件时如何影响自动保存功能?我环顾四周,但无法判断整个页面是否有效去旅行服务器,或者只是一个有效的项目可以自行发送。

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

如果在字段上设置AutoPostBack = True,并为其添加OnChange事件(这将根据用户与之交互的字段类型而有所不同),则可以执行保存。不要在您进行这些更新的方法中调用Page.Validate。点击“提交”按钮后调用它。

这可能导致很多往返服务器,并且需要编写和调试很多代码。

Timer方法是在重复的基础上对一个方法的一次调用。如果你能推荐使用计时器,但有时候这不是一个选择。

答案 1 :(得分:1)

一般来说,这是您要在客户端设置的内容。理想情况下,您最终会得到许多微小的请求,这些请求在后端不需要太多电源。然而,这取决于许多变量,包括您正在使用的数据库引擎。

$(document).ready(function () {
    $("input").blur(OnFieldChanged);
});

function OnFieldChanged()
{
    var $this = $(this);
    var isValid = ValidateField($this);
    if (isValid)
    {
        SaveField($this);
    }
}

function SaveField($field)
{
   if ($this.val() === $this.prop("oldVal")) return;

    var data = {
        id: $("idfield").val()
    };
    data[$field.attr("id")] = $field.val();

    $.post({..}).done(function() {
        NotifySaved($this);
        $this.prop("oldVal", $this.val());
    });
}

function ValidateField($field)
{
    // Validate the field with your method of choice, manually call Microsoft's client-side validate function or switch to jquery validate.
    return true;
}