Response.Redirect and MSCharts
我最近正在开发一个小型应用程序,它包含一个索引页,其中包含一些从数据库中运行的报表,然后使用C_在ASP.NET中更新该页内容的一些表单,以便将来了解如何使用mscharts。
索引页可以显示我设置的5个报告中的任何一个,通过下拉框选择。默认情况下,将选择第一个,以便页面上始终显示图表。
我让图表正常工作,并在索引页上显示我想要它们做的,更新数据库的表单也做了它们的工作。但是,当我单击其中一个页面上的"退出"按钮(它将用户送回索引页面)时,应该在那里显示的图表只是一个红色的"X",就好像图像不存在一样。如果我刷新了页面,它会像应该的那样出现。
当时的退出按钮使用response.redirect()将用户发送回索引页,我花了一些时间确认这是正确的方法。最后,我尝试切换到server.transfer()的使用,尽管每个站点似乎都表明在页面执行周期方面这两个站点之间没有重大差异-只有response.redirect()发送了一个全新的请求,而server.transfer没有。
尽管如此,使用server.transfer()还是解决了这个问题。哦,太好了!
有人能解释一下为什么会这样吗?
更新-一些代码,以防有任何帮助。
更新表单中有问题的事件之一-当然,最初使用的是response.redirect()。
1 2 3 4 | protected void Exit_Click(object sender, EventArgs e) { Server.Transfer("Default.aspx"); } |
从default.aspx加载页面:
1 2 3 4 5 | protected void Page_Load(object sender, EventArgs e) { Report report = new Report(reportList.SelectedIndex); ChartPanel.Controls.Add(report.Chart); } |
报告类的概要——这基本上是我在createChartfromParameters()方法中指定的各种报告的包装器。它只是简单地完成了设置图表的所有工作,这样它就不会最终出现在UI中,然后让UI获取图表对象本身。如果有人发现它有用的话,我可以发布这个实现,但是它和任何东西一样丑陋,而且非常冗长,所以我宁愿不发布。
1 2 3 4 5 6 7 8 9 10 | public class Report { private Chart chart { public get; } public Report(string title, string command, string x, string y, string label, string legend, SeriesChartType type) public Report(int presetChartNum) private void createChartFromParameters(string title, string command, string x, string y, string label, string legend, SeriesChartType type, int customcode = 0) } |
我认为这是对服务器对象和响应对象如何执行重定向的误解
它与客户机如何重定向到新资源、从何处重定向以及之后可以访问哪些对象有很大关系。
我可以把它全部打印出来,但这里有一个很好的资源。
http://techahead.wordpress.com/2007/10/14/aspnet-servertransfer-vs-responseredirect/