2011-03-10 68 views
0

我在Visual Studio 2010中使用ASP.NET web表单。我如何以编程方式创建UI控件?例如,我想在单独的表单文件中定义一个侧栏菜单等,然后生成的页面将继承该功能。在我的基类中,我为this.Controls添加了一个新控件,但生成页面时会引发异常,并说该控件必须放置在标记为runat="server"的标记内。如果我想以编程方式生成这些控件,如何将它们放置在这样的标签内?ASP.NET的继承代码

回答

2

你写:

,然后将得到的页面将继承该功能

这让我相信,你最好使用母版页,这里的a tutorial on ASP.NET master pages(使用谷歌找到更多)。然而,继承本身也可以轻易地通过采取任何现有的控制,并扩展它来实现:

class MyTextBox : TextBox 
{ 
    // your extensions and overrides 
} 

后来你写:

我添加了一个新的控制this.Controls,但生成页面会引发异常,并说该控件必须放置在runat =“server”标签内。

这是不完全相关的。这很简单:每个服务器控件都必须有一个runat="server" _或者它不会被ASP.NET解析器识别。即,如下:

<!-- existing server control, placed on a page --> 
<asp:Label runat="server" Id="MyOwnLabel" /> 
<!-- your own server control, placed on a page --> 
<my:MyTextBox runat="server" ID="ReallyMyTextBox" /> 
1

我有点困惑。这听起来像你试图通过各种页面以编程方式添加元素。在ASP.NET中,这不是必需的。

我相信你在找什么(以及什么是正确的工具)将是ASP.NET Master Pages

Master Pages将允许您为具有常见内容(如导航,广告条等)的页面定义一种模板。