#asp.net #user-controls #webforms #viewstate
#asp.net #пользовательские элементы управления #веб-формы #состояние просмотра
Вопрос:
Я пытался использовать переменную ViewState ViewState[«username»], назначенную в одном из пользовательских элементов управления страницы, из другого пользовательского элемента управления страницы.
Значение ViewState, похоже, равно null.
Вы не можете, чтобы пользовательские элементы управления на странице считывали значения ViewState друг для друга.
Спасибо, Вишну
Комментарии:
1. Состояние просмотра не является безопасным местом для сохранения имени пользователя. Попробуйте вместо этого использовать проверку подлинности в формах.
2. Состояние просмотра [«Имя пользователя»] = пользователь. Имя пользователя; // это присваивается в одном элементе управления и в том элементе управления, где я читаю строку viewstate username = ViewState[«Имя пользователя»] как строку;
3. Возможно, сохранение
ViewState
вPage
решит вашу проблему, а неUserControl
само по себе4. Я могу использовать session, чтобы избежать этой путаницы… но просто любопытно, существует ли состояние состояния просмотра между usercontrol на одной странице.
Ответ №1:
Это по замыслу — ASP.NET будет различать состояние просмотра различных (экземпляров) элементов управления. Это разграничение основано на идентификаторе элемента управления. Это необходимо, потому что в противном случае автор элемента управления не сможет использовать тот же ключ состояния просмотра, и нет способа узнать, какие ключи могут использоваться другими авторами элемента управления.
В вашем случае я бы посоветовал вам сохранить данные в состоянии просмотра на уровне страницы и передать их вашим пользовательским элементам управления (со страницы) через свойства.