динамически генерируя поля с помощью jquery, а также делая их серверными на asp.net

StackOverflow https://stackoverflow.com/questions/1638057

Вопрос

Привет, это может показаться странным вопросом, но вот моя ситуация:

У меня есть форма, в которой пользователь может щелкнуть и добавить строки, содержащие определенные поля ввода.Это строго выполняется на стороне клиента с помощью jQuery.Я могу получить доступ к входным значениям при обратной передаче на стороне asp.net с помощью запроса.Форма и название полей, что нормально.Проблема в том, что когда страница публикуется в ответ, поля, очевидно, исчезают.Так что у меня нет способа выполнить проверку ошибок или что-то еще.Каковы мои возможные решения здесь?Должен ли я динамически генерировать соответствующие поля на стороне сервера, когда происходит обратная передача, и помещать уже прочитанные значения из полей, сгенерированных на стороне клиента, чтобы это было прозрачно для пользователей?Это что, обходной способ ведения дел?Есть ли лучший способ?

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

Я ищу любую дополнительную информацию, которая может у кого-то быть, а также плюсы и минусы этих подходов.

Спасибо

Это было полезно?

Решение

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

Я думаю, что ваша идея с AJAX хороша:

  1. вызовите серверный метод с помощью jQuery (это может быть статический метод на вашей странице .aspx.) Серверный метод добавляет строковое значение к сохраненному в сеансе List<String>.
  2. Попросите метод вернуть строковое значение, которое является идентификатором элемента для добавления на страницу.
  3. Добавьте элементы на свою страницу с помощью jQuery.
  4. Используйте переменную session для повторного создания ваших динамически добавляемых полей при обратной передаче.

Этот метод ускоряет добавление полей на стороне клиента и предотвращает исчезновение ваших динамических полей при обратной передаче.

Другие советы

1) Быстро и грязно, вы могли бы использовать панель обновления, но это несколько увеличило бы размер трафика.Это позволило бы вам включить элементы управления проверкой, разместив обратно всю разметку для таблицы.

2) Вы могли бы использовать какой-нибудь пользовательский валидатор или пользовательский метод проверки и просто использовать запрос.Значения формы.Пока у вас есть какой-то способ идентифицировать поля, вы должны быть в состоянии решить эту проблему, но вам придется воссоздать сцену, если обратная передача завершится неудачей, поскольку вы потеряете эти части.

3) Вы могли бы выполнить всю "обратную передачу" с помощью вызова WebMethod и обработать все вручную.Вероятно, это самый чистый способ сделать это, поскольку вы в любом случае смешиваете и сопоставляете традиционные материалы WebForms с более клиентской моделью.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top