Как вы получаете доступ к коллекции ViewState из PreviousPage при перекрестном обратном обращении?

В ASP.net 2.0 свойство PreviousPage веб-страницы не имеет коллекции ViewState. Я хочу использовать эту коллекцию для передачи информации между страницами.

4 ответа

Состояние просмотра является эксклюзивным для страницы.

Если вы хотите перенести элементы,

  • вы можете сохранять данные в базе данных, файле, билетах auth или других файлах cookie (не используйте Session или HttpContext.Current.Cache, если вы можете помочь)
  • выполните перекрестную страницу - со своей первой страницы, вернитесь ко второй странице (и получите информацию из коллекции HttpContext.Current.Request.Form [])
  • введите значения в строку запроса


Вы можете избежать использования директивы PreviousPageType, используя какой-либо базовый класс, который может удерживать ваш объект. Например, у вас есть класс

public class BaseCrossPage:System.Web.UI.Page
{
 public List<guid> Invitees = new List<guid>();
}
</guid></guid>

Итак, если первая страница получается из этого класса

public partial class Default : BaseCrossPage
{
 protected void Page_Load(object sender, EventArgs e)
 {
 this.Invitees = LoadInvitees();
 }
}

Затем страница, которую вы опубликовали, может получить доступ к этому объекту, если предположить, что предыдущая страница получена из BaseCrossPage...

public partial class secondPage : System.Web.UI.Page
{
 protected void Page_Load(object sender, EventArgs e)
 {
 BaseCrossPage p = (BaseCrossPage)PreviousPage;
 List<guid> Invitees = p.InvitedTeams
 }
}
</guid>

вид "viewstate" между страницами...


Используйте HttpContext.Current.Items вместо... ViewState подходит только для страницы, на которой он находится.


Вы не можете напрямую. (См. http://msdn2.microsoft.com/en-us/library/ms178139(vs.80).aspx

Вот что вы можете сделать -

Создайте общедоступные свойства на первой странице, выставляя информацию, которую вы хотите предоставить. На второй странице установите для параметра PreviousPageType первую страницу в заголовке файла aspx:

<%@ previouspagetype virtualpath="~/firstpage.aspx" %>

Затем получите значения этих свойств в событии Load второй страницы:

If (Not MyBase.IsPostBack) Then
 _someValue = Me.PreviousPage.SomeValue
End If

licensed under cc by-sa 3.0 with attribution.