これはうまくいくはずですが、少しカスタマイズする必要があります。私は非常に似たようなことをやっていますが、私はそこに埋め込まれたサードパーティのコントロールに問題があるため、アップデートパネル内でマルチビューを使用しなくてはなりませんでした。
下記のasp.netタグを使用して、aspxファイルのマスターページへの参照を追加する必要があります。また、スクリプト・マネージャーをマスター・ページのパブリック・コントロールとして公開し、イベントをそれに接続することもできます。
あなたのページのデザイン/ htmlコードで:マスターへの仮想パスを更新するか、タイプを使用してタイプリファレンスを割り当ててください。あなたのページのinitイベントで
<%@ MasterType VirtualPath="~/MasterPage.master" %>
:
public void Page_Init(object sender, EventArgs e)
{
// can be done at MasterPage level if you like
this.Master.ScriptManager.EnableHistory = true;
}
次に、ページのロードイベントで:
protected void Page_Load(object sender, EventArgs e)
{
this.Master.ScriptManager.Navigate +=
new EventHandler<HistoryEventArgs>(ScriptManager_Navigate);
if (!this.IsPostBack && !ScriptManager.GetCurrent(this).IsInAsyncPostBack)
{
// load default multiview index
}
}
次に、あなたのページにこの新しいイベントハンドラを追加します。これはアイテム "myArgs"に名前を付けます。あなたのコンテンツにもう少し直感的なものを使うべきです。私の実装では、並べ替え順序やページインデックスなどの一連の項目がdelimで区切られており、それらを分割して割り当てます。
protected void ScriptManager_Navigate(object sender, HistoryEventArgs e)
{
if (!string.IsNullOrEmpty(e.State["myArgs"]))
{
string args = e.State["myArgs"];
SetMyArgs(args);
}
else
{
// just load default
}
}
argsはマルチビューインデックスになります。これらは私が使うヘルパー関数です。インデックスだけが気になるアイテムなら、これらの呼び出しをメインメソッドにインライン展開することができます。その後
private void SetMyArgs(string args)
{
int myIndex = int.Parse(args);
// set multiview index here?
}
private string GetMyArgs()
{
return myMultiview.ActiveIndex.ToString();
}
アクティブ率を変化させるイベントをトリガ、これらのメソッドにこれを追加し
if (this.IsAsync)
{
this.Master.ScriptManager.AddHistoryPoint("myArgs", GetMyArgs());
}
うまくいけば、これはあなたにいくつかの助けを与えます。
こんにちはジム ありがとうございました。 Josi –