我有一個基本的用戶控件(WC1),它繼承自WebUserControl和從WC1繼承的子用戶控件(WC2)。我在vs設計視圖中添加了一個文本框和一個標籤給WC1,而不是代碼隱藏。 但我放入WC1的所有服務器控件都是空的,並給出空指針異常。我嘗試訪問不同事件中的文本框和標籤,但它們全部爲空。asp.net UserControl繼承,基本用戶控件中的Web控件是空指針
有人知道這裏出了什麼問題嗎?謝謝。
步驟來重現錯誤:
- 創建的名爲WC1 web用戶控制VS 添加新項
- 加入VS的設計視圖中的文本框和標籤服務器控件WC1和放碼後面:var value = txetBox.Text;
- 創建的名爲WC2另一個Web用戶控件在VS添加一個新的項目並改變其基類WC1在後面
- 其代碼在VS和阻力WC2添加新項目的設計視圖中創建一個網頁頁面
- 運行頁面,那麼你將看到異常的代碼隱藏在WC1
代碼:
WC1:
code behind:
public partial class WC1: System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
}
}
頁:
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="WC1.ascx.cs" Inherits="WebApplication1.WC1" %>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
WC2: 後面的代碼:
public partial class WC2: WC1
{ var txt = TextBox1.Text}
頁:
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="WC2.ascx.cs" Inherits="WebApplication1.WC2" %>
綜上所述,我的問題:
WC1的可以通過Web服務器控件是在這種情況下實例化?或者是否可以將用戶控件從其他用戶控件繼承,並將父級用戶控件的Web服務器控件傳遞給其子項,而不必擔心佈局?
好吧,我已經測試過,如果我不添加控件在WC1代碼隱藏,它將永遠不會被實例化。
需要更多信息。你是否將控件聲明式添加到ASCX文件或在代碼隱藏文件中創建它們?你如何將用戶控件添加到頁面?一些代碼示例也會有幫助。 – 2010-03-01 00:09:09