Asp.net .NET按名称动态获取控件

Asp.net .NET按名称动态获取控件,asp.net,reflection,dynamic,controls,Asp.net,Reflection,Dynamic,Controls,我需要从表示控件名称的字符串创建一个.NET控件(在ASP.NET中) Control myList = SomeSystemClass.GetControlByName("DropDownList"); 我想在.NET平台中有一些反射方法允许这样做,但我不知道是哪一种。有什么想法吗?我认为您需要将Type.GetType()重载与Activator.CreateInstance组合起来,以创建一个您描述的工厂方法 相关文件: Type.GetType: Activator.CreateIn

我需要从表示控件名称的字符串创建一个.NET控件(在ASP.NET中)

Control myList = SomeSystemClass.GetControlByName("DropDownList");

我想在.NET平台中有一些反射方法允许这样做,但我不知道是哪一种。有什么想法吗?

我认为您需要将
Type.GetType()
重载与
Activator.CreateInstance
组合起来,以创建一个您描述的工厂方法

相关文件:

  • Type.GetType:
  • Activator.CreateInstance:
Edit我突然想到,如果您能够使用代码片段中所示的类型转换,那么反射应该是绝对不必要的。如果您能够将变量声明为
DropDownList
,那么只需包含
=new DropDownList()并称之为良好

编辑2有一段时间,有一篇文章可能正确地直觉了你的意图。如果要查找已存在的控件,并且其命名容器(可能是页面,也可能是数据绑定控件)上有句柄,则可以使用
FindControl
方法检索该控件,然后强制转换为相关类型


相关文档:

我认为您需要将
Type.GetType()
重载与
Activator.CreateInstance
组合起来,以创建一个您描述的工厂方法

相关文件:

  • Type.GetType:
  • Activator.CreateInstance:
Edit我突然想到,如果您能够使用代码片段中所示的类型转换,那么反射应该是绝对不必要的。如果您能够将变量声明为
DropDownList
,那么只需包含
=new DropDownList()并称之为良好

编辑2有一段时间,有一篇文章可能正确地直觉了你的意图。如果要查找已存在的控件,并且其命名容器(可能是页面,也可能是数据绑定控件)上有句柄,则可以使用
FindControl
方法检索该控件,然后强制转换为相关类型

相关文档:

服务器控件:

Control c = Page.ParseControl("<asp:DropDownList runat='server' />");
MyControl myControl1 = (MyControl)LoadControl("TempControl_Samples1.ascx");
对于服务器控件:

Control c = Page.ParseControl("<asp:DropDownList runat='server' />");
MyControl myControl1 = (MyControl)LoadControl("TempControl_Samples1.ascx");

如果没有
HttpContext
,就无法创建这样的控件。最好解释一下您的场景。如果是自定义(服务器)控件或用户控件,也可以添加。它是ASP.NET服务器控件。如果没有
HttpContext
,您无法创建这样的控件。最好解释一下您的场景。如果是自定义(服务器)控件或用户控件,也可以添加。它是ASP.NET服务器控件。