簡體   English   中英

嘗試在ASP.NET 4.5中覆蓋HtmlGenericControl時出錯

[英]Error attempting to override HtmlGenericControl in 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文檔,但沒有提及覆蓋要求。 有任何想法嗎?

通過從aspx文件中刪除<HtmlGenericSelfClosingTag ID="MyElement" runat="server" />標記,然后直接在代碼中直接添加控件,就可以解決該問題,如下所示:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    Me.head.Controls.AddAt(0, BaseElement)
End Sub

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

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

ASP.NET:HtmlGenericControl<div> - 刷新</div><div id="text_translate"><p>我有一個DIV元素:</p><pre> &lt;div runat="server" id="path"&gt;Nothing here... yet&lt;/div&gt;</pre><p> 和 JavaScript 動態更改其內容。 經過一些操作后,我的元素看起來像這樣(用 Firebug 測試,JS 沒問題):</p><pre> &lt;div runat="server" id="path"&gt;FirstTest - SecondTest - ThirdTest&lt;/div&gt;</pre><p> 然后我想將它保存到文本文件( &lt;asp:Button runat="server"... ):</p><pre> &lt;script runat="server"&gt; void Page_Load(Object sender, EventArgs e) { Button1.Click += new EventHandler(this.GreetingBtn_Click); } void GreetingBtn_Click(Object sender, EventArgs e) { HtmlGenericControl path = (HtmlGenericControl)Page.FindControl("path"); Response.AddHeader("content-disposition", "attachment;filename=download.txt"); Response.ContentType = "text/plain"; Response.Write(path.InnerText); Response.Flush(); Response.Clear(); Response.End(); } &lt;/script&gt;</pre><p> 它也可以正常工作(SaveDialog彈出窗口,用戶選擇位置),但是......在output文件中只有一行“這里沒有......還沒有”。 看起來他對 JavaScript 所做的更改沒有反應!</p><p> 我怎樣才能強迫他刷新DIV ,這樣我就可以隨時保存最新的內容?</p><p> 謝謝你的幫助!</p></div>

[英]ASP.NET: HtmlGenericControl <DIV> - refresh

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

相關問題 asp.net中的htmlgenericcontrol之類的jquery助手 ASP.NET:HtmlGenericControl<div> - 刷新</div><div id="text_translate"><p>我有一個DIV元素:</p><pre> &lt;div runat="server" id="path"&gt;Nothing here... yet&lt;/div&gt;</pre><p> 和 JavaScript 動態更改其內容。 經過一些操作后,我的元素看起來像這樣(用 Firebug 測試,JS 沒問題):</p><pre> &lt;div runat="server" id="path"&gt;FirstTest - SecondTest - ThirdTest&lt;/div&gt;</pre><p> 然后我想將它保存到文本文件( &lt;asp:Button runat="server"... ):</p><pre> &lt;script runat="server"&gt; void Page_Load(Object sender, EventArgs e) { Button1.Click += new EventHandler(this.GreetingBtn_Click); } void GreetingBtn_Click(Object sender, EventArgs e) { HtmlGenericControl path = (HtmlGenericControl)Page.FindControl("path"); Response.AddHeader("content-disposition", "attachment;filename=download.txt"); Response.ContentType = "text/plain"; Response.Write(path.InnerText); Response.Flush(); Response.Clear(); Response.End(); } &lt;/script&gt;</pre><p> 它也可以正常工作(SaveDialog彈出窗口,用戶選擇位置),但是......在output文件中只有一行“這里沒有......還沒有”。 看起來他對 JavaScript 所做的更改沒有反應!</p><p> 我怎樣才能強迫他刷新DIV ,這樣我就可以隨時保存最新的內容?</p><p> 謝謝你的幫助!</p></div> ASP.NET:HtmlGenericControl(“div”)或Panel ASP.Net 4.5編譯錯誤 帶有ASP.NET 4.5和WIF的ADFS覆蓋NameClaimType 如何創建段落( <p> )在ASP.NET中使用HtmlGenericControl? ASP.NET:使用HtmlGenericControl的粗體文本 iframe 解析器錯誤 (HtmlIframe/HtmlGenericControl) 但仍在使用 .NET 4.0(不是 .NET 4.5) 覆蓋asp.net/IIS錯誤頁面 asp.net 4.5啟用表單身份驗證錯誤
 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM