Как стать автором
Обновить

Комментарии 9

НЛО прилетело и опубликовало эту надпись здесь
Чем не устраивает?
Само собой разумеется, что значения нужные контролу нужно определять в контроле, не понимаю, зачем вы это написали.
Но как вариант вместо скрытых полей внутри контрола можно использовать ControlState. Это кстати, гораздо удобнее.
НЛО прилетело и опубликовало эту надпись здесь
Понятно. Но я не уверен, что при сохранении большого количества данных через HiddenField размер страницы будет сильно меньше чем при использовании ControlState. Надо бы исследовать этот вопрос.
Адекватная самописная сериализация "как правило" менее объёмна, чем сериализация BinaryFormatter'ом. (имеется в виду, когда сериализуешь, что тебе нужно в HiddenField)

Вопрос лишь в том - имеет ли смысл тратить на такую сериализацию/десериализацию время или нет.
Кстати, есть "паттерн", если так можно выразиться, как нужно переопределять эти методы, если элемент управления наследуется от другого:

в Load:
Pair pair = savedObject as Pair;
if (pair == null)
return;

_myObject = pair.First as MyObjectType;
base.LoadControlState(pair.Second);

в Save:

return new Pair(_myObject, base.SaveControlState());
спасибо, полезно
а можно источник паттерна? он кем-то описан?
Возможно, этот подход — доработанный вариант описанного здесь.
Но то, что это первоисточник — не факт.
Источник я не скажу. Просто, когда-то давно разбирал этот вопрос и наткнулся на статью соответствующую. В гугле можно легко найти источники, например, с помощью запроса base.loadcontrolstate. У меня первый результат получился - http://haacked.com/archive/2007/03/16/gain-control-of-your-control-state.aspx.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации