继承ASP.NET的代码

时间:2011-03-10 14:29:39

标签: c# asp.net visual-studio-2010

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

2 个答案:

答案 0 :(得分: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 :(得分:1)

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

我相信你所寻找的(以及适合这项工作的工具)将是ASP.NET Master Pages

母版页将允许您为包含常用内容的页面定义一种模板(如导航,广告栏等)。