2012-02-15 17 views
1

私はASP.NET 4.0サイトを持っています。このサイトには、UpdatePanel内にツリービューコントロールがあります。ASP.NET 4.0、ScriptManager、およびHistoryPoints

ユーザーが最初にページを訪問したときにポストバックが発生していない(詳細はこちら)

ユーザーがツリー内のノードをクリックすると、ポストバックがトリガーされます。ユーザーがツリーを移動しているときに履歴ポイントを設定できます。これは大きな問題ではありません。履歴ポイントは、選択されたノードのIDです。

は、私が見ている2つの動作があります(私は、ページ上の他の情報を駆動するためにこれを使用したい)と私は、これらの是正する方法についての困惑:

  • まず、履歴ポイント常に現在のアイテムを指しているようです。アイテムAを開始し、アイテムBをクリックすると、戻るボタンを押すと、項目Bで2回クリックします(履歴ポイントがすべて同じ値に設定されているかのように)。私は履歴がユーザーがクリックしたノードの実行リストでなければならないと考えましたが、この場合、リストは常に現在のIDの履歴ポイントの集合であるようです。 (誰かがスクリプトマネージャーで履歴ポイントのコレクションを公開する方法を知っている場合、私はどのように聞くのが大好きです)
  • 2つ目は、ツリーが最初に読み込まれるときにポストバックがないということです。 Ajaxポストバックなしで履歴ポイントを設定する方法はありますか? (私はツリーのデフォルト状態を保持する方法を持っていますが、今すぐルートからアイテムAに移動し、戻るをクリックすると、自分のページにヒットする前にどのページにでも移動します)

他の誰かがScriptManagerの履歴ポイントで奇妙な動作をしていますか?

私はビューステート、隠しフィールド、クッキー、セッション変数などの選択肢についても考えてきましたが、私が試したソリューションでは何の幸運もありませんでした。 を使わずに戻るボタンを取得する方法はありますか?履歴ポイントはありますか? (私はそこにいるとは思わない)

答えて

2

ポストバックなしで履歴ポイントを設定するには、ScriptManager.AddHistoryPoint()を呼び出します。

履歴ポイントを追加することは問題ではないが、ScriptManager.Navigateでは状態を正しく読み込んでいないか、Itemに既に更新されているセッション情報に頼っていると思いますB.

履歴状態にあるものを見る1つの方法は、各履歴エントリにページの状態を識別するのに十分な説明的な名前を付けることです。テストのために、短縮された状態文字列ハッシュを使用するか、文字列を作成してページの状態を識別し、戻るボタンをクリックして最新のブラウザ履歴を表示すると、わかりやすい名前のページが表示されますそれらを特定する。ところでhttp://msdn.microsoft.com/en-us/library/cc472966.aspx

は、ここでそのことについて話してMSDNのページです申し訳ありませんが、私は遅れてこの質問に取得しています。それでも問題が解決しない場合は、コードを記入してください。私はいくつかの私のページの更新パネルのツリーコントロールを持つページに履歴ポイント機能を実装しました。

関連する問題