Способы отслеживания динамически создаваемых элементов DOM в ASP.NET - PullRequest
2 голосов
/ 26 марта 2010

Предположим, у вас есть страница в ASP.NET, где имеет смысл использовать JavaScript / jQuery для изменения DOM со значениями, которые в конечном итоге будут прочитаны сервером при отправке. Например, у вас есть форма, которая позволяет конечным пользователям добавлять / удалять объекты (например, иждивенцы в форме медицинского страхования или активы в заявке на кредит).

Какими способами можно гарантировать, что эти элементы обнаруживаются и извлекаются сервером после отправки информации?

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

Кроме того, я не ищу предложений, в которых бы не использовались динамические элементы DOM (например, использование мастера и т. Д.). Я специально пытаюсь улучшить свою технику с помощью динамически создаваемых элементов DOM.

Ответы [ 2 ]

2 голосов
/ 26 марта 2010

Есть два способа сделать что-то вроде этого:

Первый: публиковать только информацию при отправке.Пока вы добавляете атрибуты 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-запрос к серверу для выполнения такого действия и используйте ключ контейнера состояния для отслеживания того, успешно ли выполнен запрос.Установите состояние «истина», когда запрос был успешно отправлен.Обязательно сделайте это в том порядке, в котором вы получаете события, поэтому отправляйте их по одному на сервер, чтобы убедиться, что вы поддерживаете правильное состояние.

Вы можете (попытаться) предотвратить закрытие браузераесли некоторые состояния еще не сохранились.

0 голосов
/ 26 марта 2010

почему вы используете код на стороне клиента для этого? я бы пошел по пути создания обратной передачи и добавления элемента управления из кода на стороне сервера. встроенная панель обновления ajax должна справиться с этим очень быстро.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...