ASP.Net 2.0 也引入了 DefaultButton 的概念。
这至少适用于 Form 和 Panel 元素:
<form id="form1" runat="server" defaultbutton="Button2">
<div>
<asp:TextBox id="TextBox1" runat="server"></asp:TextBox>
<br />
<asp:Button id="Button1" runat="server" text="1st Button" onclick="Button1_Click" />
<br />
<br />
<asp:panel id="something" defaultbutton="button3" runat="server">
<asp:TextBox id="TextBox2" runat="server"></asp:TextBox>
<br />
<asp:Button id="Button2" runat="server" text="2nd Button" onclick="Button2_Click" />
<br />
<asp:Button id="Button3" runat="server" text="3rd Button" onclick="Button3_Click" />
</asp:panel>
<br />
<br />
</div>
</form>
因此,当您加载页面或在 TextBox1 中输入文本时,按 Enter 将提交 Button2。当您在 TextBox2 中输入文本时,按 Enter 将提交 Button3 - 就像您在面板中一样。
这由 ASP.Net 创建的 onkeypress 方法提供支持。
当页面加载时,IE 和 Firefox 都会高亮显示 Button2(如你所愿)。
如果您知道哪个按钮将被声明为默认按钮,则可以使用通常用于为所有浏览器设置样式的 CSS。
相当烦人的是,当您聚焦任一文本框时,IE 会(错误地)突出显示 Button1。
这是因为 IE 的默认行为被 ASP.Net 发出的一些 javascript 覆盖:
<script type="text/javascript">
//<![CDATA[
WebForm_AutoFocus('Button2');//]]>
</script>
但是,一旦另一个元素获得焦点,IE 就会忽略这一点,并返回突出显示错误的按钮(除非用户在此示例中明确单击它,否则不会使用该按钮)。
除了用图像按钮替换它们之外,我不确定我还能建议什么。