2015-03-23 3 views
0

Я понимаю, что это может быть элементарный вопрос, но я новичок в веб-формах Asp.net, поэтому, пожалуйста, несите меня.Asp.net webforms autosave

У меня есть длинная форма на странице, которую я хотел бы автосохранять, когда пользователи печатают в поле или делают выбор. Проблема в том, что все, что мне удалось найти в Интернете, - это автосохранения, которые работают на таймере. Я бы предпочел, чтобы он сохранялся, когда пользователь делает свои изменения. Также я хотел бы, чтобы только отредактированный элемент формы редактировался для отправки на сервер, чтобы каждый раз не отправлять всю страницу назад.

Я прочитал, что для этого нужно использовать веб-сервис, но поскольку я хочу автосохранять отдельные элементы, а не всю форму на таймере, как бы настроить веб-сервис для этого? Я новичок в webservices, я хотел бы знать, что читать. Любые ссылки приветствуются.

Также как реализована функция автосохранения при использовании контрольных проверок asp.net? Я огляделся, но не могу сказать, действительно ли вся страница должна быть действительной, чтобы совершить поездку на сервер, или если только один действительный элемент может быть отправлен сам.

Спасибо за помощь!

ответ

1

Если вы установите AutoPostBack = True в поле, и вы добавите для него событие OnChange (это будет зависеть от типа поля, с которым пользователь взаимодействует), вы можете выполнить сохранение. Не вызывайте Page.Validate в методах, в которых вы делаете эти обновления. Назовите его, когда вы нажмете кнопку «Отправить».

Это может привести к многократным поездкам на сервер, и для написания и отладки требуется много кода.

Подход Таймера - это один вызов одного метода на основе повторения. Если вы можете посоветовать пойти с таймером, но иногда это не вариант.

+0

Точно, что мне нужно. Спасибо! Я посмотрю, могу ли я использовать таймер, так как я не хочу много поездок на сервер. Это может быть сложно с формами, с которыми я работаю, поэтому использование автоповтора и событие onchange могут быть тем, что мне нужно. Еще раз спасибо, я ценю помощь! – Cineno28

+0

ОК, если вы это сделаете, по крайней мере, настройте свою функцию сохранения как отдельный метод и вызовите ее из всех событий OnChange и нажмите кнопку «Отправить». Также убедитесь, что ваша база данных будет поддерживать частичные записи! – Tim

+0

Отличная информация, чтобы иметь в виду, прежде чем вводить это. Я все еще новичок в этом, так что это очень полезно, спасибо снова – Cineno28

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; 
} 
+0

Очень полезно, спасибо. Я смотрел в .blur и думал, что это тоже вариант. Очень полезно понять процесс с кодом, спасибо! – Cineno28