динамическое генерирование полей с использованием jquery, а также создание их на сервере asp.net - PullRequest
0 голосов
/ 28 октября 2009

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

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

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

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

Спасибо

Ответы [ 2 ]

1 голос
/ 28 октября 2009

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

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

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

1 голос
/ 28 октября 2009

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

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

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

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

...