Я видел эту проблему много, и обычно это связано с тем, что переменные ViewState
оцениваются слишком рано в жизненном цикле страницы, или что EnableViewState
является ложным, но я проверил для обоих из них и они такие, как я ожидал.ViewState Variable Reset After Postback
Мой код:
public Int32 MyNumber
{
get
{
if (ViewState["MyNumber"] != null)
{
return (Int32)ViewState["MyNumber"];
}
return 0;
}
set
{
ViewState["MyNumber"] = value;
}
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
if (!this.IsPostBack)
{
MyNumber = 23;
}
}
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
var numberValue = MyNumber;
}
Когда OnPreRender
сначала вызывается, numberValue
является 23. Каждый последующий вызов после этого это 0. Каждый раз, когда есть постбэк оказывается, чтобы сбросить.
Вопрос
Как получить значение упорствовать после обратной передачи?
Что я Пробовал
Доведение присвоение значения вне проверки для постбэка, но тогда теряется смысл использования ViewState
в первую очередь.
Это не скомпилировано. – SLaks
Спасибо, отредактирован. Я отредактировал код прямо в попытке упростить вопрос и оставил там «нуль» (в любом случае в моем коде, имеющем отношение к этой проблеме, нет ничего другого). –
нет никаких проблем с вашим кодом. Проверьте, является ли 'EnableViewState' ложным в' web.config'. –