У меня есть много мест в моем коде, которые выглядят как:DataBind если PostBack не удалось
protected void Page_Init(object sender, EventArgs e)
{
DataBindAllRepeaters(); // heavy (up to 1 min).
}
protected void Click(object sender, EventArgs e)
{
if (DoSomething(... user input .....))
Response.Redirect("Success.aspx");
ShowError();
}
Вы можете заметить, данные Repeater
с не используются постбэка в любом месте, если DoSomething(...)
успешно, но занимает до 1 минуты, чтобы загрузить его в Page_Init при каждом нажатии. Есть ли какая-то изящная техника, чтобы избежать этого?
Конечно, я знаю о IsPostBack
, но тогда мне нужно позвонить DataBindAllRepeaters()
много раз: по Page_Init
и в конце каждого обработчика кликов?
Это страница статистики в моей панели администратора. Он рассчитан «на лету». Я отключил ViewState для всего моего сайта давным-давно - у меня есть вложенный 'Repeater' с 'DropDownList' и т. Д., И он создает гигантскую строку base64. Поэтому я привязываю данные к каждой перезагрузке страницы. – Denis
@Denis: вы видите, что отключить viewstate не означает, что вы получаете лучшую производительность. Тем не менее, он по-прежнему не объясняет, почему вы считаете, что вам нужно «вызывать DataBindAllRepeaters() много раз: на странице_Инте и в конце каждого обработчика кликов». –