Чем не устраивает?
Само собой разумеется, что значения нужные контролу нужно определять в контроле, не понимаю, зачем вы это написали.
Но как вариант вместо скрытых полей внутри контрола можно использовать ControlState. Это кстати, гораздо удобнее.
Понятно. Но я не уверен, что при сохранении большого количества данных через HiddenField размер страницы будет сильно меньше чем при использовании ControlState. Надо бы исследовать этот вопрос.
Адекватная самописная сериализация "как правило" менее объёмна, чем сериализация BinaryFormatter'ом. (имеется в виду, когда сериализуешь, что тебе нужно в HiddenField)
Вопрос лишь в том - имеет ли смысл тратить на такую сериализацию/десериализацию время или нет.
Источник я не скажу. Просто, когда-то давно разбирал этот вопрос и наткнулся на статью соответствующую. В гугле можно легко найти источники, например, с помощью запроса base.loadcontrolstate. У меня первый результат получился - http://haacked.com/archive/2007/03/16/gain-control-of-your-control-state.aspx.
asp.net: использование механизма ControlState