将.aspx加载到Panel / UpdatePanel中

时间:2009-12-12 07:34:22

标签: c# asp.net ajax

我目前正在使用ASP.NET和C#开发基于网络的游戏。以前,我只是将各种游戏屏幕(开始,高分,结果等)组织到嵌套在主UpdatePanel中的各个面板中,并随着游戏的进展显示/隐藏适当的面板。但是,我严重低估了游戏的规模,我将不得不将其分解为更易于管理的块。

我现在的想法是让Main.aspx有一个空的UpdatePanel,我会将各种屏幕作为单独的.aspx文件加载到其中。有点像WinForms我认为,当你创建另一个新的WinForm并将其添加到当前的父表单时。

我一直试图找到如何在代码隐藏中做到这一点,但我仍然处于迷失状态。我可以用Response.Redirect做到这一点,但是当新页面加载时会有通常的闪烁,这是我想要避免的。

我确实遇到了一些名为UFrame的有趣内容,但这似乎适用于HTML而不是代码隐藏。

我感谢您对此事的任何帮助或建议,如果之前有人问过,请致歉。谢谢。

编辑:关于womp的回答,.ascx似乎是朝着正确的方向迈出的一步。我成功启动了我的Startscreen控件并在Main.aspx中运行。但是,出现了另一个问题,当我尝试在单击按钮时将另一个用户控件添加到Main.aspx内的面板时,屏幕显示为空白。

我在Startscreen控件中有一个按钮的事件处理程序是:

protected void Btn_Arcade_Click(object sender, EventArgs e)
    {
        this.Parent.Controls.Add(LoadControl("Arcade.ascx"));

    }

我不太确定是否有任何问题,但在这种情况下,Parent基本上就是我所说的位于Main.aspx的UpdatePanel中的GameContentPanel。

我不认为这也是HTML捏造的问题,因为我通过首先加载而不是使用Startscreen进行测试,所有内容都很好。

我也尝试在Main.aspx的开头加载两个控件,并且两个控件也正确加载。

1 个答案:

答案 0 :(得分:1)

“屏幕”可以是.ascx usercontrols吗?您可以使用LoadControl("~/path/to/myControl.ascx")将用户控件加载到面板中,然后这些控件可以参与主页的生命周期。

如果他们真的必须在单独的.aspx页面中,那么您可能需要查看使用iframe,否则可能需要重新考虑您的方法。 Webforms应用程序被设计为在一个页面/表单的上下文中发生许多事情,而不是将控制来回转移到多个页面。