asp.net面板默认按钮不起作用

时间:2015-12-14 07:46:32

标签: c# asp.net

我目前在asp.net页面上有2个面板。我有一个登录和注册面板,我为每个面板设置了DefaultButton="btn1属性。如果你完成了任何一种形式(并专注于那种形式),它总是会触发注册按钮,这是页面上的第一个按钮/面板。以下是我的代码:

<asp:Panel runat="server" ID="pnlRegister" DefaultButton="btn1">
    <asp:TextBox runat="server" TextMode="Email" ID="txtEmail" placeholder="Email" ValidateRequestMode="Enabled" />
    <asp:TextBox runat="server" TextMode="Password" ID="txtPass" placeholder="Password" /> <br /><br />
    <asp:Button runat="server" ID="btn1" OnClick="Register" Text="Register" />
</asp:Panel>

<asp:Panel runat="server" ID="pnlLogin" DefaultButton="btn2">
    <asp:TextBox runat="server" ID="txtEmailLog" placeholder="Email Address" /> <br />
    <asp:TextBox runat="server" TextMode="Password" ID="txtPassLog" placeholder="Password" /> <br /> <br />
    <asp:Button runat="server" ID="btn2" OnClick="Login" Text="Login" />
</asp:Panel>

编辑细节:

没有错误,它根本没有按预期工作。 {ID:1}}属性应该在键入'enter'时提交默认按钮,同时聚焦在面板内的字段上。例如,当尝试使用DefaultButton面板上的登录框并按Enter键时,提交pnlLogin按钮(这是注册功能)而不是btn1(这是登录功能)。

我希望这有助于清除混淆而不是添加它。

2 个答案:

答案 0 :(得分:0)

将您的按钮更改为:

<asp:Button runat="server" UseSubmitBehavior="true" ID="btn1" OnClick="Register" Text="Register" />
<asp:Button runat="server" UseSubmitBehavior="true" ID="btn2" OnClick="Login" Text="Login" />

UseSubmitBehavior使您的按钮对与您的代码对应的提交操作(单击输入)作出反应,现在您的代码通过浏览器的默认样式做出反应。

希望它有所帮助。

答案 1 :(得分:0)

这不是一个解决方案,而且我还在寻找一个,但是为了绕过这个问题,我最终隐藏了一个面板,并根据用户想要完成的功能在表单之间切换。如果我找到更好的解决方案,我会在这里回复。