Пользовательский серверный элемент управления не принимает форматирование CSS

Это приложение ASP.NET 4.5 Web Forms.

Я создал элемент управления, который наследует класс Button, и он просто гарантирует, что пользователи не смогут дважды щелкнуть по нему. Я основал это на примерах, подобных этому.

Моя проблема заключается в том, что он не подхватил форматирование CSS при размещении на странице. Стандартная кнопка на той же странице отображает стили из CSS. Чтобы обойти это, я попытался просто добавить CssClass="uiButton" в разметку, но это тоже не работает. На кнопку не применено форматирование.

Я, кажется, случайно сломал способность кнопки потреблять CSS для форматирования. У кого-нибудь есть идеи о том, что искать? Я вне лидов. Спасибо!

Matt

Вот мой класс кнопки:

    Imports System
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Text
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControls
'<Assembly: TagPrefix("ServerControl1", "cc1")> 


<DefaultProperty("Text"), ToolboxData("<{0}:MyButton runat=server></{0}:MyButton>")>
Public Class MyButton
    Inherits Button
    Public Sub New()
        MyBase.New()
        MyBase.UseSubmitBehavior = False
    End Sub

    Protected Overrides Sub OnPreRender(e As EventArgs)
        'OnClientClick = InlineAssignHelper(Me.Enabled = False, True) & OnClientClick
        OnClientClick = "this.disabled=true;" + OnClientClick

        RegisterClientScript()
        RegisterStartupScript()

        ' MyBase.CssClass = "uiButton"

        MyBase.OnPreRender(e)
    End Sub
    <DefaultValue(False)> _
    Public Overrides Property UseSubmitBehavior() As Boolean
        Set(value As Boolean)
        End Set
        Get
        End Get
    End Property

    Private Sub RegisterClientScript()
        If Page Is Nothing Then
            Throw New Exception("Page is null, MyButton can't register scripts.")
        End If

        Dim key, url As String
        key = "MyButton"
        url = ResolveClientUrl("/scripts/helpers/MyButton.js")
        If Not Page.ClientScript.IsClientScriptIncludeRegistered(key) Then
            Page.ClientScript.RegisterClientScriptInclude(key, url)
        End If

    End Sub

    Private Sub RegisterStartupScript()
        If Page Is Nothing Then
            Throw New Exception("Page is null, MyButton can't register scripts.")
        End If

        Dim key, script As String
        key = UniqueID & "_Startup"
        script = String.Format("MyButton_InitOnClick ( '{0}' )", UniqueID)
        If Not Page.ClientScript.IsStartupScriptRegistered(key) Then
            Page.ClientScript.RegisterStartupScript(Page.GetType, key, script, True)
        End If
    End Sub

End Class

Вот JavaScript:

function SubmitButton_Click() {
    var src = event.srcElement;
    src.disabled = true;
    src.aspnet_onclick();
    src.disabled = typeof( Page_IsValid ) != “undefined” ? Page_IsValid : true;
}

function SubmitButton_InitOnClick( id )
{
    var sb = document.getElementById( id );
    sb.aspnet_onclick = sb.onclick;
    sb.onclick = SubmitButton_Click;
}

Вот разметка. CSS добавляется на главной странице и просто наследуется стандартными кнопками. Это работает в течение многих лет, поэтому проблема заключается в моей реализации этой кнопки.

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
    <div>
        Testing 123
    </div>
    <div>
        <cc1:MyButton ID="MyButton1" runat="server" text="Push me!" CssClass="uiButton" />
        &nbsp;
        <asp:Button ID="Button1" runat="server" Text="Button" />
        <br />
        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
        <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="TextBox1" ErrorMessage="RequiredFieldValidator"></asp:RequiredFieldValidator>
    </div>

</asp:Content>

Я добавил CssClass="uiButton" в качестве обходного пути (это не сработало), но стандартная кнопка в этой разметке отображается в правильном стиле из класса uiButton, используемого в приложении. MyButton отображает без применения стиля.

0 ответов

Другие вопросы по тегам