我在Visual Studio 2010中使用ASP.NET Web表单。如何以编程方式创建UI控件?例如,我想在单独的表单文件中定义一个侧栏菜单等,然后生成的页面将继承该功能。在我的基类中,我向this.Controls
添加了一个新控件,但是生成页面会引发异常,说控件必须放在带有runat="server"
的标记内。如果我想以编程方式生成这些控件,如何将它们放在这样的标记中?
答案 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。
母版页将允许您为包含常用内容的页面定义一种模板(如导航,广告栏等)。