Si, dans une page ASP.NET, vous avez plusieurs formulaire qui cohabitent, vous avez peut-être remarqué que le fait d'appuyer sur Enter envoie toujours le même, à savoir le premier présent dans la page. Ca peut être assez dérangeant, si par exemple vous avez un formulaire de connexion à votre site situé en-dessous d'un champ de recherche : dans ce cas, lorsque l'utilisateur aura saison son mot de passe et appuyé sur Enter (sur son clavier, donc), ce sera le formulaire de recherche qui sera transmis !

Pour contrôler ce genre de scénarii, ASP.NET met à disposition l'attribut DefaultButton sur les balises <asp:Form> et <asp:Panel>. Elle permet d'indiquer, pour respectivement le formulaire ou le panel concerné, quelle bouton sera activé lors de l'appui sur la touche Enter. Par exemple :

<html>
   <body>
      <form id="Form2" runat="server">
         <asp:Panel ID="Panel1" DefaultButton="Button1" RunAt="server">
            <asp:Button ID="Button1" RunAt="server"/>
         </asp:Panel>
         <asp:Panel ID="Panel2" DefaultButton="Button2" RunAt="server">
           <asp:Button ID="Button2" RunAt="server"/>
         </asp:Panel>
      </form>
   </body>
</html>


Et si vous n'avez pas de bouton, mais une balise <asp:Login> que vous voulez activer lors de l'appui sur la touche Enter ? Rien de plus simple, il suffit de donner IdDuForm$LoginButton comme DefaultButton :

<html>
   <body>
      <form id="Form2" runat="server">
         <asp:Panel ID="Panel1" DefaultButton="Login$LoginButton" RunAt="server">
            <asp:Login ID="Login1" RunAt="server"/>
         </asp:Panel>
      </form>
   </body>
</html>