代码之家  ›  专栏  ›  技术社区  ›  DisgruntledGoat

是否允许Enter键在ASP.NET中登录?

  •  10
  • DisgruntledGoat  · 技术社区  · 16 年前

    我有一个标准的ASP:登录控件:

    <asp:Login ID="mbLogin" runat="server" TitleText=""
      DestinationPageUrl="~/Default.aspx"
      PasswordRecoveryText="Forgot your password?"
      PasswordRecoveryUrl="~/LostPassword.aspx"></asp:Login>
    

    在Internet Explorer中,按Enter键不会提交表单,但IE会快速地向我发出10次哔哔声。在其他浏览器中,Enter工作得非常好,并按您的期望提交论坛。

    我见过 this question 但只有当实际的表单元素带有实际的按钮时,这才有效,而不是作为一个整体的登录控件。

    为什么在IE中会被阻塞(为什么会因为某种原因被阻塞10次)?有解决办法吗?

    4 回复  |  直到 13 年前
        1
  •  10
  •   rick schott    16 年前

    在登录控件的设计器中:“转换为模板”。然后在页面加载中设置 默认按钮 通过找到 登录按钮 .

    ASPX:

    <form id="form1" runat="server">
        <div>
            <asp:Login ID="Login1" runat="server" OnAuthenticate="Login1_Authenticate">
                <LayoutTemplate>
                    <table border="0" cellpadding="1" cellspacing="0" style="border-collapse: collapse;">
                        <tr>
                            <td>
                                <table border="0" cellpadding="0">
                                    .....
                                    <tr>
                                        <td align="right" colspan="2">
                                            <asp:Button ID="LoginButton" runat="server" CommandName="Login" Text="Log In" ValidationGroup="Login1" />
                                        </td>
                                    </tr>
                                </table>
                            </td>
                        </tr>
                    </table>
                </LayoutTemplate>
            </asp:Login>
        </div>
        </form>
    

    代码落后:

        protected void Page_Load(object sender, EventArgs e)
        {
            Button lbButton = Login1.FindControl("LoginButton") as Button;
            form1.DefaultButton = lbButton.UniqueID;
        }
    
        2
  •  0
  •   Robert Williams    16 年前

    这是一个黑客,但它将提供一个解决您的问题与Internet Explorer。
    在页面中添加一个隐藏在视图中的文本框。

    <!-- Hack for Internet Explorer browsers to allow the page to post back when the enter key is pressed-->
    <asp:TextBox ID="txtIEHackBox" runat="server" style="visibility: hidden; display: none;" />
    

    这将导致Internet Explorer在单击Enter时返回按钮Web控件的名称/值对。

        3
  •  0
  •   Aliaksei Kliuchnikau poncius    14 年前
    Button lbButton = Login1.FindControl("LoginButton") as Button;
    
    ContentPlaceHolder contentPlaceHolder = (ContentPlaceHolder)Master.FindControl("ContentPlaceHolder1");
    contentPlaceHolder.Page.Form.DefaultButton = lbButton.UniqueID;
    
        4
  •  0
  •   Brett    13 年前

    我知道这是一个非常老的帖子,但另一种方法是使用 asp:Panel 具有 DefaultButton 设置为用户通常单击以登录的按钮的ID:

    <asp:Login ID="LoginUser" runat="server">
      <LayoutTemplate>
        <asp:Panel ID="LoginPanel" runat="server" DefaultButton="LoginButton">
          <other stuff here like username and password textboxes>
          <asp:Button ID="LoginButton" runat="server" CommandName="Login" Text="Log In"/>
      </asp:Panel>
    </LayoutTemplate>