我的Asp.Net应用程序中有一个登录页面。我注意到当我在Enter
或username
文本框中点击password
键时,它会从我的Site.Master页面启动一个模态。我尝试了一些解决方案,包括为我的模态的Panel
添加一个默认按钮,以及尝试将UseSubmitBehavior=false
应用到启动模态的asp:LinkButton
。最后一种方法失败,因为UseSubmitBehavior
没有asp:LinkButton
。为什么会发生这种情况,我该如何解决?
master.site
<asp:button id="hiddenButton" runat="server" style="display:none;" />
<ajaxToolkit:ModalPopupExtender ID="uxReportModal" runat="server" PopupControlID="ReportPanel" TargetControlID="hiddenButton" CancelControlID="btnClose" BackgroundCssClass="modalBackground"> </ajaxToolkit:ModalPopupExtender>
<asp:Panel ID="ReportPanel" runat="server" CssClass="modalPopupReport" align="center" style="display:none; text-align: left;" DefaultButton="hiddenButton">
....
<div style="text-align:center; margin-bottom: 20px;">
<asp:Button ID="btnSubmit" runat="server" Text="Submit" onClick="btnSubmit_Click"/>
<asp:Button ID="btnClose" runat="server" Text="Close" />
</div>
</asp:Panel>
注意:我也尝试添加一个javascript解决方案,但这也不起作用。基本上它失败了因为没有定义文本框ID,我不确定如何正确应用example的解决方案:
LoginPage.aspx
<script>
uxTextBoxUserName.Attributes.Add("onkeydown", "if(event.which || event.keyCode){if ((event.which == 13) || (event.keyCode == 13)) {document.getElementById('"+Button1.UniqueID+"').click();return false;}} else {return true}; ");
</script>
....
<td class="style2">
<asp:TextBox ID="uxTextBoxUserName" runat="server" Height="18px" Width="150px"></asp:TextBox>
</td>
我能够使用高于我的模态Panel
的“hiddenButton”来解决这个问题。这似乎是来自LinkButton
的某种默认提交行为。我必须在我的表单包装器中设置`DefaultButton =“hiddenButton”',而不是Panel。
<form runat="server" defaultbutton="hiddenButton">
然后,我禁用了“hiddenButton”。我不明白为什么在asp控件中没有内置方法来禁用这种行为,但这个hack有效。
<asp:button id="hiddenButton" runat="server" type="button" Enabled="false" style="display:none;" />