0

ASP.NET の既定のボタンと既定のフォーカスが機能しません。私のアプリケーションは、サーバー マンチンの IIS でホストされています。(サーバー名はServer1と言います)。マシン フォーカス外のアプリケーション URL にアクセスし、デフォルトのボタン クリックが正常に機能している場合 (http://Server1/VPath/Login.aspx) 。サーバーで localhost を使用してアプリケーション URL にアクセスしている場合、正常に動作しています (http://localhost/VPath/Login.aspx) が、サーバーを使用して URL にアクセスしているときに、フォーカスとデフォルト ボタンのクリック (Enter) が機能しません。サーバーでの名前。(http://server1/VPath/Login.aspx)。問題は何ですか?

注: IE のバージョンは、上記のすべてのケースで同じです。

これが私のコードファイルです。

ログイン.aspx

<asp:Panel ID="LoginWrapper" runat="server" CssClass="loginWrapper" >
    <asp:Login ID="LoginControl" runat="server" meta:resourcekey="LoginResource1" 
        DisplayRememberMe="false" OnAuthenticate="authenticate">
        <LayoutTemplate>
            <table>
                <tr>
                    <td>
                        <asp:Label ID="UserNameLabel" runat="server" AssociatedControlID="UserName" meta:resourcekey="UserNameLabelResource1"
                            Text="User Name:"></asp:Label></td>
                    <td>
                        <asp:TextBox ID="UserName" runat="server" meta:resourcekey="UserNameResource1"></asp:TextBox>
                        <asp:RequiredFieldValidator ID="UserNameRequired" runat="server" ControlToValidate="UserName"
                            ErrorMessage="User Name is required." ToolTip="User Name is required."
                            meta:resourcekey="UserNameRequiredResource1" Text="*"></asp:RequiredFieldValidator>
                    </td>
                </tr>
                <tr>
                    <td>
                        <asp:Label ID="PasswordLabel" runat="server" AssociatedControlID="Password" meta:resourcekey="PasswordLabelResource1"
                            Text="Password:"></asp:Label></td>
                    <td>
                        <asp:TextBox ID="Password" runat="server" TextMode="Password" meta:resourcekey="PasswordResource1"></asp:TextBox>
                    </td>
                </tr>
                <tr>
                    <td colspan="2" style="text-align: center; color: red">
                        <asp:Literal ID="FailureText" runat="server" EnableViewState="False" meta:resourcekey="FailureTextResource1"></asp:Literal>
                    </td>
                </tr>
                <tr>
                    <td>
                    </td>
                    <td>
                        <asp:Button ID="LoginButton" runat="server" CommandName="Login" Text="Login"
                            meta:resourcekey="LoginButtonResource1" /></td>
                </tr>
            </table>
        </LayoutTemplate>
    </asp:Login>
</asp:Panel>

ログイン.aspx.cs

 protected void Page_Init(object sender, EventArgs e)
    {
        Response.RedirectLocation = Request.Url.ToString();
        // bug#19156 Enter key should Login
        LoginControl.Focus();
        Page.Form.DefaultButton = ((Button)LoginControl.FindControl("LoginButton")).UniqueID;
    }

protected void Page_Load(object sender, EventArgs e)
    {
        log.Debug("Loading login Page");
        try
        {
            if (Request.QueryString["activity"] != null)
            {
                string activity = Request.QueryString["activity"].ToString();
                switch (activity)
                {
                    case "login":
                        if (Request.QueryString["Username"] != null)
                            un = Request.QueryString["Username"].ToString();
                        if (Request.QueryString["Password"] != null)
                            pw = Request.QueryString["Password"].ToString();
                        authenticate(null, null);
                        break;
                }
            }
        }
        catch (ExecutionEngineException ex)
        {
        }
        if (Request.IsAuthenticated && !IsPostBack)
        {
            Response.Redirect("~/VPath/NotAuthorized.aspx");
        }
        else if (!IsPostBack)
        {
           HideTopMenu();
        }

    }
4

1 に答える 1

1

外部からアクセスしたときにコードが機能しない理由はわかりませんが、問題はpage_initevent にあると思います。

オーバーライドすることをお勧めします。これも安全です:-

protected override void OnInit(EventArgs e)
    {
        base.OnInit(e);
        Response.RedirectLocation = Request.Url.ToString();
        // bug#19156 Enter key should Login
        LoginControl.Focus();
        Page.Form.DefaultButton = ((Button)LoginControl.FindControl("LoginButton")).UniqueID;
    }
于 2012-08-07T12:26:59.717 に答える