Есть два способа сделать что-то вроде этого:
Первый: публиковать только информацию при отправке.Пока вы добавляете атрибуты name
и id
к каждому элементу в вашей DOM, каждый элемент представлен в Request.Form
, так что вы можете легко перебирать эту коллекцию.
Я склонениметь соглашение об именах, например insurance_row_1
, insurance_row_2
и т. д.Вы можете найти все строки, такие как Request.Form.AllKeys.Where(k=>k.StartsWith("insurance_row_"))
.
Когда вы хотите сохранить каждое действие на сервере:
Поддерживать контейнер состояния в javascript, который содержит информацию в некотором словаре.например, контроль, где вы помещаете каждое действие, выполненное вашим приложением, и состояние, обработал ли сервер их.Примерно так:
var stateContainer = [
{ 'put-insurance-row-1', false },
{ 'delete-insurance-row-1', false }
];
Выполните AJAX-запрос к серверу для выполнения такого действия и используйте ключ контейнера состояния для отслеживания того, успешно ли выполнен запрос.Установите состояние «истина», когда запрос был успешно отправлен.Обязательно сделайте это в том порядке, в котором вы получаете события, поэтому отправляйте их по одному на сервер, чтобы убедиться, что вы поддерживаете правильное состояние.
Вы можете (попытаться) предотвратить закрытие браузераесли некоторые состояния еще не сохранились.