Можно ли сохранить состояние просмотра между страницами в ASP.NET? - PullRequest
4 голосов
/ 07 апреля 2011

У меня есть button (состояние просмотра включено) на главной веб-странице и значение visible=false на одной из дочерних веб-страниц.Если открыта вторая дочерняя страница, состояние кнопки (visible=false) не сохраняется.

Кажется, viewstate действительно только для одной страницы и не переносится на другие веб-страницы.Есть ли какая-то хитрость, чтобы сделать viewstate глобальным для всех веб-страниц?

Ответы [ 3 ]

15 голосов
/ 07 апреля 2011

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

3 голосов
/ 07 апреля 2011

Нет, вы не можете сделать состояние просмотра глобальным, они относятся к конкретной странице.Я бы посоветовал использовать куки, если вы действительно хотите, чтобы они были на стороне клиента, иначе вы можете использовать сессию.

0 голосов
/ 19 мая 2011

Если вам нужно сохранить на «глобальном» уровне, вы должны использовать состояние приложения.Вы также можете использовать Cache Object.Возможно, вы захотите передать значения с одной страницы на другую, вы можете добиться этого, используя объект Context в сочетании с Server.Transfer.

1) Вам необходимо публичное свойство на исходной странице, возвращающее значениепередать

namespace SomeNameSpace
{
    public partial class SourcePage: System.Web.UI.Page
    {
        public string ValueToPass
        {
            get
            {
                if (Context.Items["ValueToPass"] == null)
                    Context.Items["ValueToPass"] = string.Empty;
                return (string)Context.Items["ValueToPass"];
            }
            set
            {
                Context.Items["ValueToPass"] = value;
            }
        }
        ........
    }
}

2) Выполнить Server.Transfer (DestinationPage.aspx) 3) В событии Page_Load целевой страницы

namespace SomeNameSpace
{
    public partial class SourcePage: System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            var value = this.Context.Items["ValueToPass"];
        }
    }
}

Надеюсь, это поможет

...