这是similar question,但我在实施此处显示的解决方案时遇到了麻烦。
在我的情况下,我有两个链接,用户设置,空间设置和两个 UserControls ,即UserSettings.ascx
,{ {1}}。
我所做的工作如下所示:
SpaceSettings.ascx
这不起作用。结果是:
public partial class SiteSettings : RefreshDitectedPage {
protected void Page_Load(object sender, EventArgs e) {
}
protected override void OnInit(EventArgs e) {
base.OnInit(e);
string key = Session["Settings"] as String;
System.Diagnostics.Debug.WriteLine(key);
if (key == null) {
Session["Settings"] = "User";
AddUserSettings();
} else {
if (key.Equals("User")) {
AddUserSettings();
} else {
AddSpaceSettings();
}
}
}
protected void SettingsLink_OnCommand(object sender, CommandEventArgs commandEventArgs) {
switch (commandEventArgs.CommandName) {
case "User":
Session["Settings"] = "User";
AddUserSettings();
break;
case "Space":
Session["Settings"] = "Space";
AddSpaceSettings();
break;
}
}
private void AddUserSettings() {
AddSettings(LoadControl("~/UserControls/UserSettings.ascx") as UserSettings);
}
private void AddSpaceSettings() {
AddSettings(LoadControl("~/UserControls/SpaceSettings.ascx") as SpaceSettings);
}
private void AddSettings(UserControl control) {
SettingsPlaceholder.Controls.Clear();
SettingsPlaceholder.Controls.Add(control);
}
/*protected void Page_Unload(object sender, EventArgs e) {
Session["Settings"] = null;
System.Diagnostics.Debug.WriteLine("Unload called");
}*/
}
已加载(右)并从UserSettings.ascx
登录Page_Load
的方法已显示在输出窗口(右)。UserSettings.ascx.cs
已加载(右)但在输出窗口中正在打印用户(错误)还显示了SpaceSettings.ascx
和Page_Load
的{{1}}方法的日志(UserSettings.ascx.cs
&#39} s日志错误)。 SpaceSettings.ascx.cs
已加载(右)但在输出窗口中正在打印 Space (错误)还显示了UserSettings.ascx.cs
和UserSettings.ascx
的{{1}}方法的日志(Page_Load
&#39} s日志错误)。 UserSettings.ascx.cs
的按钮时,它没有触发事件在第一次支持类时,但如果第二次单击它则会这样做。第一次记录用户(错误)和第二次空间(右),然后事件将被解雇。SpaceSettings.ascx.cs
不是null。我试图在SpaceSettings.ascx.cs
和SpaceSettings.ascx
方法中将此值设置为null,但它们都不起作用。 Session["Settings"]
正在打破系统,因为每次调用Page_Unload
和OnUnload
时都会调用它。我尝试使用Page_Unload
代替PostBack
,但OnUnload
和Request["Settings"]
给出了编译时错误:
Session["Settings"]
我该如何解决这个问题?
感谢。
答案 0 :(得分:0)
我尝试了一种不同的方法来解决我的需求,这解决了 UserControl 的交换,但后来我遇到了按钮的 EventHandlers 第一次没有触发 UserControls 的强>,但如果点击两次则触发。
我在ASP.NET论坛中问过这个问题。但没有人回答我的问题。但是我努力寻找解决方案,而且我让它成为可能。问题出在身份证上。我在那个论坛上发布了解决方案。
这是link。这可能对将来的用户有用。