10

標準の asp:login コントロールがあります。

<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回も)?回避策はありますか?

4

4 に答える 4

10

ログイン コントロールのデザイナで、「テンプレートに変換」します。次に、Page LoadでLoginButtonを見つけて、フォームのdefaultButtonを設定します。

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;
    }
于 2010-07-13T13:23:05.623 に答える
0

これが非常に古い投稿であることは知っていますが、これを行う別の方法は、ユーザーが通常ログインするためにクリックするボタンの ID に設定されたasp:Panelwithを使用することです。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>

于 2013-05-13T15:23:45.647 に答える
0

これはハックですが、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 コントロールの名前と値のペアを送り返します。

于 2010-07-13T13:21:43.803 に答える
0
Button lbButton = Login1.FindControl("LoginButton") as Button;

ContentPlaceHolder contentPlaceHolder = (ContentPlaceHolder)Master.FindControl("ContentPlaceHolder1");
contentPlaceHolder.Page.Form.DefaultButton = lbButton.UniqueID;
于 2012-02-05T11:18:09.507 に答える