У меня возникла проблема, при которой два элемента управления, которые добавляются программно, пытаются загрузить друг друга в представлении, я хочу очистить область просмотра перед загрузкой элементов управления, я попробовал Viewstate.Clear, но ничего не сделал, когда я отключил viewstate на контейнер моих элементов управления работает нормально, за исключением того, что состояние элемента управления не сохраняется. Есть ли способ очистить представление о конкретном контроле?Как очистить Viewstate?
ответ
Из вашего описания, казалось бы, что вы делаете один из распространенных ошибок при загрузке динамические элементы управления - либо вы загружаете их слишком поздно, или вы не назначаете им уникальные идентификаторы (и присваиваете им одинаковый уникальный идентификатор каждый раз, когда происходит обратная передача).
Если это действительно ваша проблема, то очистка viewstate не является подходящим действием. Это довольно просто исправить, проверить эти три ссылки:
http://msdn.microsoft.com/en-us/library/ms972976.aspx
http://www.4guysfromrolla.com/articles/092904-1.aspx
http://geekswithblogs.net/shahed/archive/2008/06/26/123391.aspx
Предполагая, что оба элемента управления наследуются от System.Web.UI.Control. Вы можете отключить их отдельные ViewStates, установив их EnableViewState на false. Также вы можете очистить ViewState, так как каждый элемент управления имеет свойство ViewState.
Проблема заключается в том, что он должен будет сделать это, перегружая метод Рендере страницы, поскольку ViewState сохраняется в жизненном цикле страницы непосредственно перед тем, как Render вызывается событием SaveViewState. Любое другое событие приведет к тому, что оно все еще будет. –
@Nisssan: Вы имеете в виду, если он очищает свойство ViewState, а не отключает ViewState? –
Да. Если он отключит это, это нормально ... нет необходимости очищать. Но если он просто хочет его очистить, он должен будет сделать это в событии Render. В противном случае он очистит его ... но даже до того, как Render будет SaveViewState ... так что он добавит его. –
Убедитесь, что идентификаторы двух программно добавленных элементов управления различны, и проблема ViewState должна исчезнуть.
Вы можете отключить ViewState на определенном контроле:
EnableViewState="False"
Да,
string controlName = "name of control";
ViewState[controlName] = null;
// create control, add it to the page
Если ViewState получает в вашем пути, и вы убежищем» t уже сделано, пожалуйста, прочитайте
Это позволит вам гораздо удобнее работать с ViewState и целым жизненным циклом страницы ASP.NET.
- 1. как очистить запрос страницы с помощью параметра Viewstate?
- 2. Где хранится ViewState?
- 3. ASP.NET Как работает ViewState
- 4. Как работает Viewstate внутри
- 5. Как сжать viewstate
- 6. Как декодировать viewstate
- 7. Как обновить родителя без потери ViewState?
- 8. ViewState .Add (.... или ViewState [ "ХХХХХ"] является эффективным?
- 9. Исключение Viewstate Проверка отказа MAC-адреса ViewState
- 10. Viewstate: 2 разных формата?
- 11. Альтернатива ViewState
- 12. о ViewState
- 13. Programmatical ViewState
- 14. Invalid Viewstate
- 15. ViewState EnableViewStateMAC
- 16. Исключение Viewstate
- 17. ASP.net ViewState
- 18. Состояние ViewState
- 19. Оптимизация ViewState
- 20. LoadRunner Viewstate
- 21. ViewState исключения
- 22. ViewState ошибка
- 23. Кэширование viewstate?
- 24. Как управление Multiview обрабатывает ViewState?
- 25. Как использовать ViewState после Request.Form?
- 26. Как отключить частичные виды ViewState?
- 27. Когда и как инициализировать ViewState?
- 28. Как грациозно обрабатывать ошибки ViewState?
- 29. как объявить viewstate в vb.net
- 30. Как отключить viewstate для хорошего?
Как аддон: убедитесь, что вы создали свои элементы управления как можно раньше и никогда не после 'Page_Load' , 'Page_Init' является предпочтительным, но событие' Page_Load' будет работать. 'Page_PreRender' будет ** не ** – Earlz
Я добавляю элементы управления пользователя для определенных событий. Элементы управления пользователя содержат модальный код, который предоставляется пользователю. Нельзя загружать все пользовательские элементы управления на page_load, потому что каждый из них загружен тяжело, и нет необходимости получать все данные, прежде чем на самом деле знать, что пользователю это нужно. Я понимаю ответ, но должно быть решение, чтобы очистить точку зрения для таких ситуаций, как моя? – Nurp
@Nurp вы должны задать новый вопрос с деталями для вашей конкретной ситуации. – slugster