C# 如何仅在代码中使用web用户控件(无渲染)?

C# 如何仅在代码中使用web用户控件(无渲染)?,c#,asp.net,user-controls,C#,Asp.net,User Controls,我有一个用户控件,它有面板和其他gui控件。它与呈现网页时的任何用户控件一样使用。然而,我需要使用它的一个新实例,并且只在代码中使用它,而不呈现它,因为它有我想要使用的业务逻辑。然而,每当gui控件在代码中被引用时,它在运行期间就会出现对象空引用错误,例如:pnlSomePanel.Visible=true 如何仅在代码中使用用户控件(不呈现)?使用.NET 4.0。从技术上讲,您应该能够创建代码隐藏类的新实例(假设是asp.NET web应用程序,而不是网站) 但是,如果用户控件中嵌入了业务逻

我有一个用户控件,它有面板和其他gui控件。它与呈现网页时的任何用户控件一样使用。然而,我需要使用它的一个新实例,并且只在代码中使用它,而不呈现它,因为它有我想要使用的业务逻辑。然而,每当gui控件在代码中被引用时,它在运行期间就会出现对象空引用错误,例如:
pnlSomePanel.Visible=true


如何仅在代码中使用用户控件(不呈现)?使用.NET 4.0。

从技术上讲,您应该能够创建代码隐藏类的新实例(假设是asp.NET web应用程序,而不是网站)

但是,如果用户控件中嵌入了业务逻辑,我建议将其移动到一个单独的类中,或者将业务逻辑作为一个带有适当参数集的静态方法公开

在页面上添加对模块的引用

<%@ Reference Control="~/modules/MyModule.ascx" %>

下一步是将其添加到父容器中,但如果跳过该步骤,代码中仍应有一个函数对象。不完全确定它是否会起作用,但理论上应该起作用。

这听起来像是责任分离的情况。我建议重构您的代码,使面板中的逻辑与面板以及您现在尝试调用它的位置分离并可调用。代码不是特定于面板的。代码引用gui对象。uc有调用其他方法的方法,它们都使用uc中的属性,因此uc作为一个整体使用是非常好的。我没有资源重构这么大的uc。我只需要一个绷带解决方案,使用uc的代码只。否则我必须复制我不想做的代码。
modules_MyModule ctrl = LoadControl("~/modules/MyModule.ascx") as modules_MyModule;
ctrl.SomeMethod();