2015-06-08 6 views
0

Я разрабатываю приложение ASP.NET Webforms и, используя WebUserControl, наткнулся на поведение, которое я не понимаю.Изменения в WebUserControl для ViewState недоступны на уровне страницы

Мой WebUserControl ставит 4 струны в ViewState:

var projectCode = SelectedProject.Value; 
ViewState["ProjectCode"] = projectCode; 

var resourceId = SelectedResource.Value; 
ViewState["ResourceCode"] = resourceId; 

var indicatorId = SelectedIndicator.Value; 
ViewState["IndicatorCode"] = indicatorId; 

var areaCode = SelectedArea.Value; 
ViewState["AreaCode"] = areaCode; 

Когда то будет сделано, моя страница должна получить эти значения из ViewState, но ViewState не содержит каких-либо элементов и возвращает null для всех 4-х ключей.

Почему ViewState на уровне страницы пуст? И если я не должен использовать ViewState для этого, каков наилучший метод передачи значений вперед и назад?

ответ

2

Поскольку используемые вами ключи являются локальными для текущего пользовательского контроля: «AreaCode», определенный в представлении для UserControl, не совпадает с тем, который определен для страницы. Это поведение отличается от первого.

Вы можете использовать словарь сеанса или реализовать некоторые общедоступные методы в пользовательском элементе управления для извлечения значений.

+0

спасибо. Я почему-то думал, что ViewState и Session - это одно и то же. Но имеет смысл иметь специальную коллекцию для сохранения состояния каждого элемента управления – Chrisi

 Смежные вопросы

  • Нет связанных вопросов^_^