Вы действительно хотите сделать 2 или 3, не отключайте проверку события.
Существуют две основные проблемы с добавлением элементов на стороне клиента asp: listbox.
Во-первых, это мешает проверке события. То, что вернулось на сервер, не то, что оно отправило.
Во-вторых, даже если вы отключите проверку событий, когда ваша страница будет опубликована обратно, элементы в списке будут перестроены из состояния просмотра, поэтому любые изменения, сделанные вами на клиенте, будут потеряны. Причина этого заключается в том, что asp.net не ожидает, что содержимое списка будет изменено на клиенте, он только ожидает выбора, поэтому он отбрасывает любые изменения, которые вы могли сделать.
Лучшим вариантом, скорее всего, будет использование панели обновления, как было рекомендовано. Другой вариант, если вам действительно нужно сделать это на стороне клиента, - это использовать старый <select>
вместо <asp:ListBox>
и хранить список элементов в скрытом поле. Когда страница отображается на клиенте, вы можете заполнить ее из разделения содержимого текстового поля.
Затем, когда вы будете готовы опубликовать его, вы заполняете содержимое скрытого поля из вашего измененного <select>
. Затем, конечно, вам придется снова разделить это на сервере и что-то сделать со своими элементами, поскольку ваш выбор пуст, поскольку он вернулся на сервер.
В целом, это довольно громоздкое решение, которое я не очень рекомендую, но если вам действительно нужно вносить изменения в listBox на стороне клиента, оно работает. Однако я бы порекомендовал вам заглянуть в панель обновления, прежде чем идти по этому пути.