私は最近、データベースからいくつかのレポートを含むインデックスページと、そのページの内容を更新するいくつかのフォーム(すべてASP.NET内)で構成される小さなアプリケーションを作成しています将来MSChartを使用する方法を学ぶために、C#を使用します。Response.RedirectとMSCharts
インデックスページには、ドロップダウンボックスで選択した5つのレポートが表示されます。デフォルトでは、最初のページが選択され、常にページにチャートが表示されます。
グラフが機能していて、インデックスページで私が望んでいたものが表示されていて、データベースを更新するフォームも仕事をしました。しかし、ユーザーがインデックスページに戻ってきたこれらのページの「終了」ボタンをクリックすると、画像が存在しないかのように、表示されていたはずのチャートが赤い「×」になります。私がページをリフレッシュしたら、それはすべきであるように現れた。
ExitボタンはResponse.Redirect()を使用してユーザーをインデックスページに戻し、これが正しい方法であることを確認しました。結局、私はServer.Transfer()の代わりに、ページの実行サイクルの点で両者の間に大きな違いがないことをすべてのサイトが示しているにも関わらず、代わりにResponse.Redirect() Server.Transferは新しい要求をしませんでした。
しかし、Server.Transfer()を使用すると、問題は解決しました。まあ、それは素晴らしいです!
誰でもこれがなぜ機能するのか説明できますか?
更新 - 一部のコードは、まったく役に立ちます。
当然のことながら、更新フォームからの問題のイベントの1つは、もともとは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);
}
概要 - これは基本的に私は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)
}
コードを見ずに伝えるのは難しいです。私が推測できるのは、Server.Transferが実行を停止し、応答がすぐにリダイレクトされるということだけです。リダイレクトは実行を完了し、問題を引き起こした意図しないコードが実行されていた可能性があります – user1231231412
興味のあるコードをポップしますが、正直言って私は十分に投稿できるとは思わない - アプリケーションコードの約半分をアップロードする必要があります。コードの多くを読んで苦労している人はいません。P – Hecksa
**アップデート**:コードが追加されました。 – Hecksa