Jag bloggar numera på http://blog.dileno.com ».

Prenumerera på RSS

Använd DefaultButton för att lösa problemet med submit-knappen i .NET

Om du använder dig av flera formulär på en ASP.NET-sida så har du troligtvis stött på problemet med att submit-knappen för ett formulär alltid triggar submit-knappen för standardformuläret på sidan. Det vill säga, fel formulär skickas när du klickar på en submit-knapp.

Det finns en lösning för detta: att använda DefaultButton tillsammans med en Panel som formuläret ligger i. Så här:

<asp:Panel ID="pnlLogin" DefaultButton="btnLogin" runat="server">
<fieldset>
<asp:TextBox ID="tbUsername" runat="server" />
<asp:TextBox ID="tbPassword" TextMode="Password" runat="server" />
<asp:Button ID="btnLogin" OnClick="btnLogin_Click" Text="Logga in" runat="server" />
</fieldset>
</asp:Panel>

Det du gör är alltså att sätta DefaultButton till namnet på submit-knappen i formuläret som ska skickas. I ovanstående fall blir DefaultButton btnLogin.

DefaultButton kan specifieras på form och Panel i .NET.

Fotnot: En Panel-kontroll i .NET renderar en extra <div> i HTML-källkoden. Det är inte snyggt, men hellre det än att ha ett formulär som inte fungerar som det ska.

 

Kommentarer

DefaultButton är bra, men tyvärr så fungerar det inte i FF, men det kan lösas med

TextBoxEmail.Attributes.Add("onKeyPress", "javascript:if (event.keyCode == 13) __doPostBack('" + ButtonSave.UniqueID + "','')");

Inte så snyggt kanske och och det är tex. ett registreringsformulär så är det ganska omständigt eftersom varje textbox måste ha "onKeyPress" eventet.
Men det funkar iaf =)

Dennie, tack för tillägget! Jag har aldrig haft strul med DefaultButton i Firefox, men har å andra sidan inte haft speciellt många nästlade formulär på mina sidor.

Ett snyggare sätt att lösa det hela på gällande andra webbläsare än Internet Explorer kan läsas här: http://www.velocityreviews.com/forums/t367383-formdefaultbutton-behaves-incorrectly.html

För övrigt är JavaScript knappast den bästa metoden att lösa sådana här .NET-problem med..

Till sidhuvudet

Clicky Web Analytics