2011-11-23 10 views
5

Sto usando i moduli ASP e volevo sapere se è possibile sostituire i pulsanti standard con elementi HTML che sono in stile usando CSS.È possibile sostituire un pulsante asp: con un elemento HTML

mia pagina di login utilizza un pulsante standard

<asp:Button ID="LoginButton" runat="server" Text="Login" 
    onclick="LoginButton_Click" /> 

legata al codice dietro (C#), che esegue il controllo di accesso.

Ho visto alcuni bei pulsanti implementati utilizzando l'elemento HTML <button> e con stile CSS che possono avere caratteristiche come immagini e rollover evidenziazione. L'HTML di base assomiglia a questo

<button type="submit" class="positive" onclick ="..."> 
    <img src="/icons/tick.png" alt=""/> 
    Login 
</button> 

Ho visto un'altra domanda discutere il Difference between asp:button and html's button quindi capisco l'elemento <button> non è una sostituzione drop-in, ma mi piacerebbe sapere se il asp:button può essere sostituito ed ancora chiama il codice LoginButton_Click C#?

EDIT:
Anche se sto usando ASP non mi dispiace con alcuni javascript lato client, se necessario.

I pulsanti che ho visto, che mi ha fatto pensare questo sono state trovate qui: Rediscovering the Button Element

EDIT 2: Ho provato il answer from XIII utilizzando il controllo asp LinkButton e che ha funzionato, rendendo il pulsante come volevo e l'attivazione il C# se cliccato

<asp:LinkButton ID="LoginBtn" CssClass="button positive" 
     OnClick="LoginButton_Click" runat="server"> 
    <img src="/icons/tick.png" alt=""/> 
    Login 
</asp:LinkButton> 

Javascript è inserito alla pagina di (come detto da Curt), che non era un problema per me, ma potrebbe essere per gli altri; ma dal momento che il asp:loginview e altri controlli associati all'autenticazione di form hanno già bisogno di javascript non sono sicuro che questo sia un problema con la soluzione.

ho deciso di accettare la risposta di jwiscarson come questa è un'implementazione più pulito e, nonostante quello che ho pensato, <button> può essere un rimpiazzo per <asp:button>

risposta

2

La risposta alla tua domanda:

se l'asp: pulsante può essere sostituito e chiamare ancora il codice C# LoginButton_Click?

è sì. Se si dispone di un pulsante mi piace:

<button type="submit" id="submit" class="positive" runat="server">Submit</button> 

L'attributo è necessario impostare è nononclick, ma onserverclick. Si potrebbe anche fare qualcosa di simile:

protected override OnInit(EventArgs e) 
{ 
    submit.ServerClick += new EventHandler(submit_ServerClick); 
} 

Se avete bisogno di fare lo styling su quel pulsante, penso che il modo migliore per affrontare questo è attraverso classi CSS come hai nel tuo esempio.

1

È possibile impostare CSS classe tramite cssClass proprietà di <asp:Button/>. Tuttavia è possibile impostare l'attributo runat="server" e onserverclick="LoginButton_Click" su <button/>.

+2

Le opzioni di stile per un '' sono piuttosto limitate. –

1

Un approccio alternativo sarebbe quello di utilizzare il controllo LinkButton e lo stile completamente con CSS. Lo facevamo per un certo progetto in passato. Ha funzionato piuttosto bene per i nostri clienti.

La proprietà di interesse se CssClass

+1

L'unico problema è che LinkButtons non funziona senza javascript. OP non ha specificato questo, ma ne vale la pena tenerne conto. – Curt

+0

@Curt - Non mi dispiace usare javascript, sono principalmente interessato a ottenere un pulsante dall'aspetto piacevole. – Tony

0

Si potrebbe usare pulsante HTML se lo desideri, e imparare a chiamare il metodo __doPostBack() con gli argomenti appropriati. I pulsanti Asp.Net e i pulsanti HTML sono praticamente identici per quanto riguarda il modo in cui sono resi nel client.

0

Come già pubblicato qui, è possibile modificare l'HTML visualizzato dal proprio asp:button o utilizzare un altro controllo asp.Il tuo asp:button verrà visualizzato come <input type="submit"> con opzioni CSS probabilmente più limitate rispetto a un tag <button>.

Da un po 'googling penso che sia possibile ottenere un tag <button> rendeva ma sembra come un'esercitazione non banale vedere How can I use the button tag with ASP.NET?

+0

Link interessante, per tutte le mie ricerche di SO prima di postare la mia domanda non sono riuscito a trovarla! Grazie, darò un'occhiata. – Tony

Problemi correlati