どうもありがとう..よく答えが見つかりました-負荷制御方法でidが問題でした。私はこのウィザードを行っていました..まあ、ほとんどのことがうまくいきます。誰かがこれがどのように機能するかを知りたい場合..いくつかの更新があります:
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);
}
//スプリットビューを使用してステップロードされたコントロールを使用しているため、シングルビューを使用してサブステップコントロールを使用しているため、ビューステートが無効になる場合があるため、エラーがスローされますが、以下のメソッドをロードする 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);
}
/私がそのようなウィザードに使用しているもう1つのクールなアイデアは、ビューステートではなく、ステップで収集された値を保存するためのセッションオブジェクトを使用していることです。私のセッション オブジェクト キーは、認証されたユーザー名と pageguid によって生成されます。そのため、多くのページを読み込むことができ、それぞれが異なるセッション オブジェクトを処理します。/
public Guid PageGuid
{
get
{
if (PageGuidField.Value == "")
{
var _pageGuid = Guid.NewGuid();
PageGuidField.Value = _pageGuid.ToString();
return _pageGuid;
}
return new Guid(PageGuidField.Value);
}
}