2014-03-12 28 views
0

我有以下類:錯誤嘗試重寫HtmlGenericControl在ASP.NET 4.5

Public Class HtmlGenericSelfClosingTag 
    Inherits HtmlGenericControl 
    Public Sub New() 
     MyBase.New() 
    End Sub 
    Public Sub New(tag As String) 
     MyBase.New(tag) 
    End Sub 
    Public Shadows Property TagName As String 
     Get 
      Return MyBase.TagName 
     End Get 
     Set(value As String) 
      MyBase.TagName = value 
     End Set 
    End Property 
    Public Overrides ReadOnly Property Controls As ControlCollection 
     Get 
      Throw New Exception("HtmlGenericSelfClosingTag cannot have child controls.") 
     End Get 
    End Property 
    Public Overrides Property InnerHtml As String 
     Get 
      Return String.Empty 
     End Get 
     Set(value As String) 
      Throw New Exception("InnerHtml cannot be set on an HtmlGenericSelfClosingTag") 
     End Set 
    End Property 
    Public Overrides Property InnerText As String 
     Get 
      Return String.Empty 
     End Get 
     Set(value As String) 
      Throw New Exception("InnerText cannot be set on an HtmlGenericSelfClosingTag") 
     End Set 
    End Property 
    Public Overrides Sub RenderControl(writer As HtmlTextWriter) 
     MyBase.Render(writer) 
     writer.Write(HtmlTextWriter.TagLeftChar & Me.TagName) 
     Attributes.Render(writer) 
     writer.Write(HtmlTextWriter.SelfClosingTagEnd) 
    End Sub 
End Class 

我已經宣佈了控制爲:

Protected WithEvents MyElement As HtmlGenericSelfClosingTag 

我已經HTML標記定義爲:

<HtmlGenericSelfClosingTag ID="MyElement" runat="server" /> 

在頁面呈現期間出現以下錯誤:

基類包含'MyElement'字段,但其類型(MyClass.HtmlGenericSelfClosingTag)與控件類型(System.Web.UI.HtmlControls.HtmlGenericControl)不兼容。

我已經搜索了DuckDuckGo(以及擴展名爲Google等),以瞭解我需要重寫哪些內容才能使我的類與HtmlGenericControl類兼容,但沒有骰子。我也檢查了MSDN文檔,但沒有提到覆蓋要求。有任何想法嗎?

回答

0

我能夠從ASPX文件中刪除<HtmlGenericSelfClosingTag ID="MyElement" runat="server" />標籤,並簡單地直接在代碼中添加控件,如要解決這個問題:

,避免呈現控件兩次,我修改Render代碼:

Public Overrides Sub RenderControl(writer As HtmlTextWriter) 
    writer.Write(HtmlTextWriter.TagLeftChar & Me.TagName) 
    Attributes.Render(writer) 
    writer.Write(HtmlTextWriter.SelfClosingTagEnd) 
End Sub