The ideas presented already are good ones. Here's another, more extensive example that definitely works:
<asp:Panel ID="newsletterPanel" CssClass="newsletter" runat="server">
<table style="background-color:#B9C8FF; border-style:none; width:100%">
<tr>
<td class="smallText" colspan="2">
Sign up for our newsletter:
</td>
</tr>
<tr>
<td class="smallText">Email:</td>
<td class="rightTextBox">
<asp:TextBox ID="textBoxSubscribeEmail" CssClass="smallTextBox"
runat="server" ValidationGroup="Newsletter" />
</td>
</tr>
<tr>
<td class="smallText">Name:</td>
<td class="rightTextBox"><asp:TextBox ID="textBoxSubscribeName" CssClass="smallTextBox" runat="server" ValidationGroup="Newsletter" /></td>
</tr>
<tr>
<td align="right" colspan="2">
<asp:Button ID="buttonSubscribe" CssClass="smallTextButton"
runat="server" Text="Subscribe" OnClick="buttonSubscribe_Click"
ValidationGroup="Newsletter" />
<br />
<div class="smallText" style="text-align:left; padding-top:5px">
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"
EnableClientScript="true"
ControlToValidate="textBoxSubscribeEmail"
ErrorMessage="Missing Email address<br />"
Display="Dynamic" SetFocusOnError="True"
ValidationGroup="Newsletter"
/>
<asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server"
EnableClientScript="true"
ControlToValidate="textBoxSubscribeName"
ErrorMessage="Missing Name"
Display="Dynamic" SetFocusOnError="True"
ValidationGroup="Newsletter"
/>
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server"
EnableClientScript="true"
ControlToValidate="textBoxSubscribeEmail"
ValidationExpression=".*@.*\..*"
ErrorMessage="Email address is not valid"
Display="Dynamic" SetFocusOnError="true"
ValidationGroup="Newsletter"
/>
</div>
</td>
</tr>
</table>
</asp:Panel>
<cc1:RoundedCornersExtender ID="RoundedCornersExtender1" runat="server" TargetControlID="newsletterPanel" Radius="6" BorderColor="185, 200, 255" Color="185, 200, 255" />
</ContentTemplate>
</asp:UpdatePanel>
// Pressed when the user wants to subscribe to the PP newsletter
protected void buttonSubscribe_Click(object sender, EventArgs e)
{
string retMsg = DBAccess.AddSubscriber(textBoxSubscribeEmail.Text, textBoxSubscribeName.Text);
ShowMessage(retMsg);
textBoxSubscribeEmail.Text = "";
textBoxSubscribeName.Text = "";
}
protected void Page_Load(object sender, EventArgs e)
{
// Make the Newsletter Subscribe button the default button
if (!IsPostBack)
{
Page.Form.DefaultButton = buttonSubscribe.UniqueID;
}
}