2011-03-10 53 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將允許您爲具有常見內容(如導航,廣告條等)的頁面定義一種模板。