Чтобы такой подход работал, вы должны сопоставить атрибуты name
(и id) в вашей разметке создания с атрибутом RadioButtonList
. Итак, очевидная проблема в вашем коде - это значение атрибута name
- к нему нужно добавить индекс для каждой переключательной кнопки, т.е.
...
sbInput.AppendFormat(
input,
"\"",
base.ClientID + "_" + index.ToString(),
base.UniqueID + index.ToString(), // <<< note the change here
base.Items[index].Value,
...
Также вместо "_" при генерации идентификатора следует использовать свойство ClientIdSeparator .
Наконец, я должен посоветовать вам отказаться от такого подхода к созданию элементов управления, поскольку он по своей природе хрупок, т. Е. Может сломаться, если произойдет изменение в том, как базовый элемент управления ASP.NET генерирует свою разметку. Например, в ASP.NET можно настроить логику генерации идентификатора клиента, и поэтому ваша логика генерации идентификатора может работать неправильно, чтобы соответствовать исходной разметке, сгенерированной базовым элементом управления.