Response.Redirect和MSCharts

时间:2012-01-06 14:22:27

标签: c# asp.net mschart

我最近一直在开发一个小应用程序,它包含一个索引页面,其中包含一些数据库运行的报告,然后是一些表单来更新该页面的内容,所有这些都在ASP.NET中使用C#,按顺序排列了解如何在未来使用MSCharts。

索引页面可以显示我设置的5个报告中的任何一个,通过下拉框选择。默认情况下,选择第一个,以便始终在页面上显示图表。

我得到了图表功能并在索引页面上显示了我想要的内容,并且更新数据库的表单也完成了他们的工作。但是,当我单击其中一个页面上的“退出”按钮(将用户发送回索引页面)时,应该显示的图表只是一个红色的“x”,就像图像不存在一样。如果我刷新页面,就会出现它应该做的事情。

当时的Exit按钮使用Response.Redirect()将用户发送回索引页面,我花了一些时间确认这是正确的方法。最后,我尝试切换到使用Server.Transfer(),尽管每个站点似乎表明两者在页面执行周期方面没有重大区别 - 只有Response.Redirect()发送了一个整体新请求,而Server.Transfer没有。

尽管如此,使用Server.Transfer()修复了这个问题。嗯,那很好!

任何人都可以解释为什么这有效吗?

更新 - 有些代码,以防它有用。

更新表单中的一个有问题的事件 - 当然最初使用的是Response.Redirect()。

    protected void Exit_Click(object sender, EventArgs e)
    {
        Server.Transfer("Default.aspx");
    }

Default.aspx的Page_Load:

    protected void Page_Load(object sender, EventArgs e)
    {
        Report report = new Report(reportList.SelectedIndex);
        ChartPanel.Controls.Add(report.Chart);
    }

Report类的大纲 - 这基本上是我在createChartFromParameters()方法中指定的各种报告的包装器。它只是完成了设置图表的所有工作,因此它不会在UI中结束,然后让UI获取图表对象本身。我可以发布实施,如果有人觉得它有用,但它很丑陋,而且非常啰嗦,所以我宁愿不这样做。

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)  
}

1 个答案:

答案 0 :(得分:1)

我认为这是对服务器对象和响应对象如何执行重定向

的误解

它与客户端如何重定向到新资源以及从何处重定向以及之后可以访问的对象有很大关系。

我可以输入所有内容,但这里有一个很好的资源。

http://techahead.wordpress.com/2007/10/14/aspnet-servertransfer-vs-responseredirect/