Как мне обработать «FindControl требует, чтобы элементы управления имели уникальные идентификаторы», когда я хочу элементы управления с тем же именем? - PullRequest
2 голосов
/ 21 июня 2011

Я использую jquery / ajax для создания модального окна с несколькими текстовыми полями. Затем я использую jquery serialize для публикации информации в этих полях обратно в мои веб-формы codebehind

генерирующий код

        t.Controls[i].Controls.Add(new TableCell());
        t.Controls[i].Controls[2].Controls.Add(new Label { Text = getResXTextAutoInsert(Cache, "valueLable", "EditDiscounts", getLanguage(), "Verdi") + " " });
        t.Controls[i].Controls[2].Controls.Add(new TextBox() { Text = discount.DiscountAmmount.ToString(), ID = "discAmount"});
        t.Controls[i].Controls[2].Controls.Add(new HiddenField() { Value = discount.DiscountId, ID = "discID" });

Я ожидаю, что когда я сделаю Request ["discID"], я получу массив целых чисел через запятую с идентификаторами, которые я хочу, и это именно то, что мой отладчик показывает мне в page_load.

Однако web.form получает исключение: Найдено несколько элементов управления с одинаковым идентификатором «discTypeDrop». FindControl требует, чтобы элементы управления имели уникальные идентификаторы.

Единственный способ обойти эту проблему - генерировать уникальные идентификаторы для каждого поля ввода вместо сохранения идентификатора в скрытом поле. Но затем мне нужно сгенерировать некрасивый код, чтобы просмотреть цикл request.form и извлечь идентификатор из имени ключа и значение из поля значения.

Значит, есть какие-нибудь предложения, как это решить?

1 Ответ

0 голосов
/ 21 июня 2011

Вы можете рекурсивно пройтись по всем элементам управления и их дочерним элементам, используя свойство Control.Controls и проверить, есть ли у каждого элемента управления свойство / настройка, которое вы ищете.

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