Большое спасибо .. хорошо, я нашел ответ - проблема была в методе управления нагрузкой. Я делал этого волшебника .. ну, большинство вещей работает сейчас.
Если кому-то интересно посмотреть, как это работает .. есть некоторые обновления:
public void LoadSplitViewControl(string path)
{
SwitchNavigationView(NavigationView.SplitView);
LastNavigationView = NavigationView.SplitView;
LoadControl(SplitControlLoader, path, "LoadedControlSplit");
}
public void LoadSingleViewControl(string path)
{
SwitchNavigationView(NavigationView.SingleView);
LastNavigationView = NavigationView.SingleView;
LoadControl(SingleControlLoader, path, "LoadedControlSingle");
}
public void LoadSingleViewControlAsClear(string path)
{
SwitchNavigationView(NavigationView.SingleView);
LastNavigationView = NavigationView.SingleView;
LoadControlAsClear(SingleControlLoader, path, "LoadedControlSingle");
}
private void LoadControl(PlaceHolder holder, string path, string ID)
{
UserControl ctrl = (UserControl)Page.LoadControl(path);
ctrl.ID = ID;
LastControlPath = path;
holder.Controls.Clear();
holder.Controls.Add(ctrl);
}
// поскольку я использую пошаговые элементы управления с использованием splitview и подэтапы, используя один вид, иногда viewstate не будет действительным, поэтому будет выдана ошибка, но вы можете решить эту проблему с помощью LoadSingleViewControlAsClear, который будет загружаться по методу ниже.
private void LoadControlAsClear(PlaceHolder holder, string path, string ID)
{
UserControl ctrl = (UserControl)Page.LoadControl(path);
ctrl.ID = ID;
LastControlPath = path;
ctrl.EnableViewState = false;
holder.Controls.Add(ctrl);
}
/ Еще одна крутая идея, которую я использую для такого мастера, заключается в том, что я не использую viewstate, а скорее сеансовый объект для сохранения значений, собранных по шагам. Мой ключ объекта сеанса генерируется аутентифицированным именем пользователя и pageguid - поэтому у вас может быть много загруженных страниц, и каждая из них будет обрабатывать разные объекты сеанса. /
public Guid PageGuid
{
get
{
if (PageGuidField.Value == "")
{
var _pageGuid = Guid.NewGuid();
PageGuidField.Value = _pageGuid.ToString();
return _pageGuid;
}
return new Guid(PageGuidField.Value);
}
}