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