页面上的PostBack导致很长时间使用图表URL在新页面上访问page_init

时间:2014-01-16 16:48:34

标签: c# asp.net postback page-lifecycle

我有一个c#ASP.NET程序需要超过1分钟的页面,b.aspx,在点击打开b.aspx的页面a.aspx中的图表时加载。

我认为这可能是我在b.apsx中的查询,但事实证明它们运行得非常快。将一些日志记录放入我的代码中我看到,从b.aspx中的页面/类实例化到它到达Page_init的时间本身就是52秒。看起来加载52秒的a.aspx正在执行PostBack并在我到达b.aspx之前再次加载。

我在a.aspx的图表中设置了以下内容。

Chart.Series[series].LegendPostBackValue = "SomeValue";
Chart.Series[series].LegendUrl = url;

Chart_Click()我设置了会话值,以便我可以在b.aspx中引用它。

HttpContext.Current.Session["value"] = e.PostBackValue;

在b.aspx中,我使用

访问数据
String somevariable = HttpContext.Current.Session["value"].ToString();

1 个答案:

答案 0 :(得分:-1)

该页面需要很长时间才能到达page_init,因为在加载新页面之前由于回发而必须重新加载调用页面。重新加载是由LegendPostBackValue引起的。

a.aspx,点击进入b.aspx的页面设置了LegendPostBackValue。这将导致a.aspx重新加载需要额外的52秒。除去

Chart.Series[series].LegendPostBackValue = "SomeValue";

并删除Chart_Click

中的会话值设置
HttpContext.Current.Session["value"] = e.PostBackValue;

而是使用

Chart.Series[series].LegendUrl = url + "?value="SomeValue";

并在页面b.apsx上使用

String somevariable = HttpContext.Current.Request.QueryString["value"];

而不是

String somevariable = HttpContext.Current.Session["value"].ToString();

修复了问题。页面a.aspx不必重新加载,因为没有回发值,而是跟随到b.aspx的URL。