Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 动态加载用户控件_C#_Asp.net_User Controls - Fatal编程技术网

C# 动态加载用户控件

C# 动态加载用户控件,c#,asp.net,user-controls,C#,Asp.net,User Controls,如何在页面中动态加载用户控件? 我有一个包含单选按钮的页面。每次单击单选按钮都会加载页面中的用户控件(.ascx)。 我正在做的是同时加载所有控件,但将其可见性设置为false。当用户单击单选按钮时,我会将特定用户控件的可见性设置为true。 因此,我将在每次回发时加载所有用户控件。 有其他可能的方法吗?例如,在id为“divControls”的页面上添加一个带有runat server的div Asp允许您动态加载用户控件“.ascx” 下面的代码应该可以解决您的问题 Control ctrl

如何在页面中动态加载用户控件?
我有一个包含单选按钮的页面。每次单击单选按钮都会加载页面中的用户控件(.ascx)。
我正在做的是同时加载所有控件,但将其可见性设置为false。当用户单击单选按钮时,我会将特定用户控件的可见性设置为true。
因此,我将在每次回发时加载所有用户控件。

有其他可能的方法吗?

例如,在id为“divControls”的页面上添加一个带有runat server的div

Asp允许您动态加载用户控件“.ascx”

下面的代码应该可以解决您的问题

Control ctrl = Page.LoadControl("UserControlPath");
divControls.Controls.Clear();
divControls.Controls.Add(ctrl);

在一个页面中保存usercontrols有什么具体的原因吗

在加载所有控件并设置其可见性时,请考虑页面视图状态

我认为有两种可能的解决办法:

  • 创建托管不同用户控件的seprate页面,当用户单击某个单选按钮时,重定向到相应的页面

  • 按需加载,即当用户请求一个用户控件时,只加载它,但删除所有其他加载的用户控件,因此页面在任何时候都只有一个用户控件


  • 如果你不把它们列在一个列表中,并且在会话中列出,你会有很多麻烦

    Ghyath的方法是正确的,但你也应该将它们添加到列表中

    List<Object> Usercontrols = new List<Objects>{};
    Control ctrl = Page.LoadControl("UserControlPath"); 
    Usercontrols.Add(ctrl);
    Session["Usercontrols"] = Usercontrols;
    
    List Usercontrols=新列表{};
    Control ctrl=Page.LoadControl(“UserControlPath”);
    Usercontrols.Add(ctrl);
    会话[“用户控件”]=用户控件;
    
    在每次回发时,需要使用列表中的控件重新加载div。
    编辑:我已经更正了最后一行。

    如果您想要一个选项卡式界面,每个选项卡都有一个用户控件支持,单选按钮在选项卡之间切换,这是一个很好的答案。