Разрешить вводить ключ для входа в asp.net?

У меня стандартный 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 отлично работает и отправляет форум, как и следовало ожидать.

Я видел этот вопрос, но это работает только тогда, когда у вас есть фактический элемент формы с реальной кнопкой, а не элемент управления входом в систему в целом.

Почему он блокируется в IE (и почему 10 раз по какой-то причине)? Есть ли обходной путь?


person DisgruntledGoat    schedule 13.07.2010    source источник


Ответы (4)


В конструкторе элемента управления входом: «Преобразовать в шаблон». Затем в разделе «Загрузка страницы» установите defaultButton вашей формы, найдя LoginButton.

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;
    }
person rick schott    schedule 13.07.2010

Это хитрость, но она поможет решить вашу проблему с 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 отправит обратно пару имя / значение веб-элемента управления Button при нажатии Enter.

person Robert Williams    schedule 13.07.2010

Я знаю, что это очень старый пост, но другой способ сделать это - использовать asp:Panel с DefaultButton, установленным на идентификатор кнопки, которую пользователь обычно нажимает для входа в систему:

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

person Brett    schedule 13.05.2013

person    schedule
comment
Было бы неплохо пояснить, а также где его разместить (например, в событии Page_Load). - person Styxxy; 28.10.2012