添加控件及其事件动态

添加控件及其事件动态

问题描述:

我在asp.net问题添加控件及其事件动态

我正在开发一个网站在使用Visual Studio 2008(asp.net/vb)

我必须让注册用户构建页面并添加已由同一用户定义的控件。

我的问题是如何动态地构建这个网页?

换句话说,我想制作像任何CMS(例如Joomla)。 CMS允许我们创建新页面并添加我们的控件,然后保存它们...

我想很多,我找到了一个解决方案,通过生成代码生成器(从A-> Z)生成页面及其代码 - 背后(apsx文件& aspx.vb文件)

是否有任何工具或解决方案能比我更好的解决方案帮助我吗?

任何帮助表示赞赏。

如果你看一个aspx页面设计师CS文件,你会发现,设计师在运行时将对象添加到控件的页面。如果你愿意,你可以在运行时编译器服务为页面生成一个类,或者你可以创建一个函数,通过它的类型名称创建一个控件的实例,然后将该对象添加到页面中。

Type.GetType("myControl").GetConstructor(new Type[] { typeof(string) }).Invoke(new object[] { "myString" }); 

哪个应该返回创建的控件,然后您可以用设计器的相同方式进行连接。

编辑:或者你可以查找compiler services。我曾经制作过一个程序,它将它的基于xml的配置文件,并使用字符串生成器将其转换为可编译的.cs文件。然后我使用编译器服务将该文本编译成我执行的类。它开始生活是这样的:

using System; 
public class MyConfigClass 
{ 
     {0} 
     {1} 
     {2} 
    public MyConfigClass() 
    { 
    } 
} 

和弄成这个样子

using System; 
public class MyConfigClass 
{ 
    public string FirstName{ 
     get; 
     set; 
    } 
    public string LastName{ 
     get; 
     set; 
    } 
    public string Age { 
     get; 
     set; 
    } 

    public MyConfigClass() 
    { 

    } 
} 

基于此信息

<?xml version="1.0" encoding="utf-8"?> 
<ConfigProperties> 
    <Property> 
    <Name>FirstName</Name> 
    <Value>John</Value> 
    </Property> 
    <Property> 
    <Name>LastName</Name> 
    <Value>Smith</Value> 
    </Property> 
    <Property> 
    <Name>Age</Name> 
    <Value>12</Value> 
    </Property> 
</ConfigProperties> 

基本上字符串生成了:“公共{0} {1} {get; set;}“,然后根据xml的值构建最终的字符串。编译器服务然后把它变成一个类。一旦课堂制作完毕,它可以存储以供将来使用。我做的另一个尝试是在网站项目中将代码文件从磁盘中运行,然后调用该站点以重新启动(这有效地重新编译了IIS在目录中找到的所有内容,包括您的新代码文件)。

可能性:)

+0

谢谢, 我没有找到代的方式是合理的!有没有另一种技术来解决这个问题? – asker

+0

我扩大了答案。我假设你有某种存储配置信息的数据存储 – 2011-10-07 00:23:48