Мне кажется, что из вашего прецедента, что «чтобы не называть его каждый раз при загрузке страницы» крики для кеша. Я думаю, если вы хотите, чтобы он истекал, возможно, установите некоторые зависимости, это might work better than session (мы не знаем всех деталей).
Теперь вы можете использовать json.net, который поможет вам сериализовать вашу информацию без изменения ваших объектов. Просто не злоупотребляйте viewstate, он может стать противным, если вы позволите ему расти. Использование сеанса или кеша (если оно соответствует вашим потребностям) - это то, что может улучшиться в долгосрочной перспективе.
Если это предмет отображения, обратите внимание также на Output cache, поскольку, возможно, вы можете отделить свой повторный контент в пользовательском элементе управления или что-то в этом роде.
Все сказанное, я хотел бы добавить маленький пример того, что вы на самом деле спросил использованием Json.NET (пример украдена из них):
//Doesnt need to be marked as serializable
Product product = new Product();
product.Name = "Apple";
product.Expiry = new DateTime(2008, 12, 28);
product.Sizes = new string[] { "Small" };
//Use this string to save into view state
string json = JsonConvert.SerializeObject(product);
ViewState["something"]=json;
После этого, получить строку обратно из ViewState [что-то] и десериализировать его.
string json = (string)ViewState["something"];
Product m = JsonConvert.DeserializeObject<Product>(json);
Предупреждение, код написан без его компиляции.
Как насчет кэша в памяти? Вы можете сохранить объекты _live_. –
Вы можете обернуть свой класс в класс-оболочку, который реализует ISerializable, а затем вы можете реализовать его, как вам нравится, без указания различных зависимых классов как Serializable. Тем не менее, мой опыт показывает, что лучше всего уменьшить размер зрительного центра в максимально возможной степени. Если вы помещаете потенциально большой объект в viewstate, он отправляется клиентам, а затем он отправляет его обратно на * каждый * запрос/ответ. Это почти всегда менее эффективно, чем альтернативные варианты. – mikey
Я избегу кэша по каким-то неизбежным причинам. В любом случае спасибо! –