为什么在Asp.Net中使用Enter键启动模态

时间:2019-04-08 19:06:48

标签: asp.net keypress modalpopupextender

我的Asp.Net应用程序中有一个“登录”页面。我注意到,当我在#include <stdio.h> void clever_switch (const char * const my_input) { #define TWO_LETTERS_UINT(FIRST_LETTER, SECOND_LETTER) ((unsigned int) ((FIRST_LETTER) << 8) | (SECOND_LETTER)) switch (TWO_LETTERS_UINT(my_input[0], my_input[1])) { case TWO_LETTERS_UINT('h', 'i'): printf("You said hi!\n"); break; case TWO_LETTERS_UINT('n', 'o'): printf("Why not?\n"); break; } #undef TWO_LETTERS_UINT } int main (int argc, char *argv[]) { clever_switch("hi"); /* "You said hi!" */ clever_switch("no"); /* "Why not?" */ return 0; } Enter文本框中按下username键时,它会从我的Site.Master页面启动一个模式。我尝试了几种解决方案,包括向模态的password添加默认按钮,以及尝试将Panel应用于启动模态的UseSubmitBehavior=false。最后一种方法失败,因为asp:LinkButton没有UseSubmitBehavior。为什么会发生这种情况,我该如何解决?

Master.Site

asp:LinkButton

注意:我也曾尝试添加JavaScript解决方案,但这也不起作用。基本上,它会失败,因为未定义文本框ID,而且我不确定如何正确地应用example中的解决方案:

LoginPage.aspx

  <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>

1 个答案:

答案 0 :(得分:0)

我能够使用模式Panel上方的“ hiddenButton”来解决此问题。这似乎是某种来自LinkButton的默认提交行为。我必须在表单包装器(而不是面板)中设置“ DefaultButton =“ hiddenButton””。

<form runat="server" defaultbutton="hiddenButton">

然后,我禁用了“ hiddenButton”。我不明白为什么在ASP控件中没有内置的方法可以禁用此行为,但是这种黑客手段有效。

 <asp:button id="hiddenButton" runat="server" type="button" Enabled="false" style="display:none;" />