Я думаю, что это должно работать, но вам нужно будет немного его настроить. Я делаю что-то очень похожее, но мне пришлось отказаться от использования multview в updatepanel из-за проблемы со встроенным в него сторонним элементом управления.
Вам нужно добавить ссылку на свою главную страницу в файл aspx, используя тег asp.net ниже. А также, представьте скрипт-менеджер в качестве общего элемента управления на главной странице, чтобы вы могли связать с ним событие.
В коде дизайна / html вашей страницы: обновите виртуальный путь к вашему Master или используйте Type, чтобы назначить ссылку на тип.
<%@ MasterType VirtualPath="~/MasterPage.master" %>
В событии init вашей страницы:
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», вы должны использовать что-то более интуитивное для вашего контента. В моей реализации у меня есть ряд элементов (например, порядок сортировки, индекс страницы и т. Д., Разделенных разделителями, а затем разбить их и назначить).
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
}
}
Аргументы будут индексом многовидового представления. Это просто вспомогательные функции, которые я использую. Если индекс - единственный элемент, который вас волнует, вы можете просто встроить эти вызовы в основные методы.
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());
}
Надеюсь, это поможет вам.