2011-11-23 11 views
5

Używam formularzy asp i chciałbym wiedzieć, czy można zastąpić standardowe przyciski elementami HTML, które są stylizowane przy użyciu CSS.Czy można zastąpić przycisk asp: z elementem HTML?

Moja strona logowania używa standardowego przycisku

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

związany z kodem za (C#), która wykonuje sprawdzanie logowania.

Widziałem kilka ładnych przycisków zaimplementowanych przy użyciu elementu HTML <button> i stylizowanych za pomocą CSS, które mogą mieć funkcje, takie jak obrazy i podświetlanie przy przewróceniu. Podstawowym HTML wygląda tak

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

widziałem kolejne pytanie omawiając Difference between asp:button and html's button więc rozumiem element <button> nie jest zastąpienie drop-in, ale chciałbym wiedzieć, czy asp:button można zastąpić i nadal wywołać kod C# LoginButton_Click?

EDIT:
Chociaż używam ASP nie przeszkadza mi trochę po stronie klienta przy użyciu javascript, jeśli jest to konieczne.

Przyciski widziałem które dało mi do myślenia o tym stwierdzono tutaj: Rediscovering the Button Element

Edytowanie 2: Próbowałem answer from XIII pomocą regulatora asp LinkButton i to działało, odtwarzania przycisku jak chciałem i aktywowanie C# po kliknięciu

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

Javascript jest włożona do strony (jak wspomniano przez Curt), co nie było dla mnie problemem, ale może być dla innych ludzi; ale ponieważ asp:loginview i inne formanty związane z uwierzytelnianiem formularzy już potrzebują javascript, nie jestem pewien, czy jest to problem z rozwiązaniem.

postanowiłem przyjąć odpowiedź jwiscarson jako to jest czystsze i wdrożenie, mimo tego, co myślałem, <button> może stanowić zamiennik dla <asp:button>

Odpowiedz

2

odpowiedź na swoje pytanie:

jeżeli asp: przycisk może zostać zastąpione i nadal wywoływać kod LoginButton_Click C#?

jest twierdząca. Jeśli masz przycisk jak:

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

atrybut trzeba ustawić to nieonclick, ale onserverclick. Można też zrobić coś takiego:

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

Jeśli trzeba zrobić stylizację na tym przycisku, myślę, że najlepszym sposobem rozwiązania to poprzez klas CSS jak masz na swoim przykładzie.

1

Można ustawić CSS klasę poprzez cssClass własności <asp:Button/>. Jednak możesz ustawić atrybut runat="server" i onserverclick="LoginButton_Click" na <button/>.

+2

Opcje stylizacji dla przycisku '" są jednak dość ograniczone. –

1

Alternatywnym podejściem byłoby użycie kontrolki LinkButton i stylu całkowicie za pomocą CSS. Kiedyś robiliśmy to dla pewnego projektu w przeszłości. Opracowany całkiem dobrze dla naszego klienta.

Obiekt zainteresowania jeśli CssClass

+1

Jedynym problemem jest to, że LinkButtons nie działają bez javascript. OP tego nie określił, ale warto wziąć to pod uwagę. – Curt

+0

@Curt - Nie mam nic przeciwko używaniu javascript, jestem głównie zainteresowany osiągnięciem ładnie wyglądającego przycisku. – Tony

0

można użyć przycisku HTML jeśli pragniesz, i dowiedzieć się, jak wywołać metodę __doPostBack() z odpowiednimi argumentami. Przyciski Asp.Net i przyciski HTML są prawie takie same, jeśli chodzi o sposób renderowania w kliencie.

0

Zgodnie z już opublikowanymi słowami, można było zaprojektować kod HTML renderowany przez swój asp:button lub użyć innego kontrolera asp.Twój asp:button będzie renderowany jako <input type="submit"> z prawdopodobnie bardziej ograniczonymi opcjami CSS niż znacznik <button>.

Od jakiegoś googling myślę, że to jest możliwe, aby uzyskać <button> tag renderowane ale wygląda non trywialny ćwiczenia zobaczyć How can I use the button tag with ASP.NET?

+0

Interesujący link, dla wszystkich moich wyszukiwania SO przed opublikowaniem mojego pytania nie udało mi się znaleźć tego! Dzięki, popatrzę. – Tony

Powiązane problemy