ViewState не запоминает значение предыдущей страницы init
Что я тут не так делаю. Я не могу заставить ViewState работать:
protected void Page_Init(object sender, EventArgs e)
{
Method1();
}
private void Method1()
{
Element.Click += new EventHandler(Button_Click);
}
public void Button_Click(object sender, EventArgs e)
{
if(ViewState["x"] != null)
// use ViewState["x"] from previous Page Init
//do processing ...
//in the end, store value for future use
ViewState["x"] = myLabel.Text;
}
Я перезагружаю страницу, поэтому сначала запускается инициализация страницы, где я делаю изменения, перед тем, как эти изменения я читаю из ViewState предыдущее значение переменной, затем выполняю обработку, а затем перезаписываю это значение для последующего использования (в моей следующей инициализации страницы).), после чего я переопределяю это снова.
Проблема в том, что мой ViewState имеет значение NULL, он не хранит / не запоминает значение, которое я дал ему на предыдущей странице init Спасибо
2 ответа
Вы не можете сделать это как ViewState
является специфичным для страницы и фактически сохраняется в HTML отображаемой страницы. Вам нужно будет передать значение через POST
или в строке запроса, или сохраните ее в сеансе, или вы можете кэшировать значение в кэше asp.net, к которому вы сможете получить доступ на другой странице.
Ты можешь использовать ViewState
перенести данные на ту же страницу на Postback.
Для настройки ViewState
:
ViewState["FirstName"] = "SuperMan";
Для получения ViewState
на обратной передаче:
string sFirstName = ViewState["FirstName"].ToString();
Вы можете использовать контекст для передачи данных с одной страницы на другую.
Page1.aspx.cs
this.Context.Items["FirstName"] = "SuperMan";
Page2.aspx.cs
string sFirstName = this.Context.Items["FirstName"].ToString();
Вы можете использовать Session
переменная, чтобы сохранить общие данные, которые требуются почти для каждой страницы или по всему приложению для конкретного пользователя.
Для настройки Session
:
Session["FirstName"] = "SuperMan";
Применяется к вашему коду:
public void Button_Click(object sender, EventArgs e)
{
if (Session["x"] != null)
{
// do processing
// in the end, store value for future use
Session["x"] = myLabel.Text;
}
}
Для получения Session
с любой страницы до окончания сессии:
string sFirstName = Session["FirstName"].ToString();
Так же, как вы можете использовать Cookies
также, но куки будут храниться на клиенте.
ViewState просто запоминает значение на своей странице и не может передать значение на другую страницу для использования другого состояния сеанса, такого как переменная сеанса, строка запроса и т. Д.
простая переменная сеанса, как это
public void Button_Click(object sender, EventArgs e)
{
if(Session["x"] != null)
// use Session["x"] from previous Page Init
//do processing ...
//in the end, store value for future use
Session["x"] = myLabel.Text;
}