2012-03-25 3 views
1

브라우저의 새로 고침 버튼을 클릭하여 양식 제출을 중단하는 해결책을 찾는 데 문제가 있습니다. 양식을 브라우저 새로 고침

내가 가진 로그인하여 양식 :

<asp:Login ID="EMSLogin" runat="server" OnAuthenticate="EMSLogin_Authenticate"> 
    <LayoutTemplate> 
     <asp:Panel ID="Panel1" runat="server" CssClass="wrapper"> 
      <asp:Panel ID="Panel2" runat="server" CssClass="holder"> 
       <asp:Panel ID="Panel3" runat="server" CssClass="loginBox one_edge_shadow"> 
        <h1> 
         Login Credentials</h1> 
        <asp:Panel ID="Panel4" runat="server" CssClass="name topmargin"> 
         <asp:Panel ID="Panel5" runat="server" CssClass="label"> 
          <asp:Label ID="UserNameLabel" runat="server" AssociatedControlID="UserName">User Name:</asp:Label> 
         </asp:Panel> 
         <asp:Panel ID="Panel6" runat="server" CssClass="textBox"> 
          <telerik:RadTextBox ID="UserName" runat="server" Height="16px" Width="165px" Font-Size="14px" 
           Font-Names="Arial Sans-Serif" ToolTip="Enter your valid login name" /> 
          <asp:RequiredFieldValidator ID="UserNameRequired" runat="server" ControlToValidate="UserName" 
           ValidationGroup="EMSLogin">*</asp:RequiredFieldValidator> 
         </asp:Panel> 
         <br class="clearfix" /> 
        </asp:Panel> 
        <asp:Panel ID="Panel7" runat="server" CssClass="name topmargin"> 
         <asp:Panel ID="Panel8" runat="server" CssClass="label"> 
          <asp:Label ID="PasswordLabel" runat="server" AssociatedControlID="Password">Password:</asp:Label> 
         </asp:Panel> 
         <asp:Panel ID="Panel9" runat="server" CssClass="textBox"> 
          <telerik:RadTextBox ID="Password" runat="server" TextMode="Password" Height="16px" 
           Width="165px" Font-Size="14px" Font-Names="Arial Sans-Serif" ToolTip="Enter your valid password" /> 
          <asp:RequiredFieldValidator ID="PasswordRequired" runat="server" ControlToValidate="Password" 
           ValidationGroup="EMSLogin">*</asp:RequiredFieldValidator> 
         </asp:Panel> 
         <br class="clearfix" /> 
         <telerik:RadButton ID="LoginButton" runat="server" CommandName="Login" Text="Log In" 
          CssClass="loginButton" Font-Size="14px" Width="100px" ValidationGroup="EMSLogin" 
          ToolTip="Click to log in" /> 
        </asp:Panel> 
       </asp:Panel> 
      </asp:Panel> 
     </asp:Panel> 
    </LayoutTemplate> 
</asp:Login> 

그리고 백엔드에서 :

protected void Page_Load(object sender, EventArgs eventArgs) { 
    log.Info("=============INSIDE Page_Load======"); 
    DataBind(); 
    LoginErrorWindow.VisibleOnPageLoad = false;  
} 

protected void EMSLogin_Authenticate(object sender, AuthenticateEventArgs e) { 
    log.Info("=============INSIDE EMSLogin_Authenticate======"); 
    RadTextBox UserName = EMSLogin.FindControl("UserName") as RadTextBox; 
    RadTextBox Password = EMSLogin.FindControl("Password") as RadTextBox; 

    if (Membership.ValidateUser(UserName.Text, Password.Text)) { 
    FormsAuthentication.RedirectFromLoginPage(UserName.Text, false); 
    } else { 
    LoginErrorWindow.NavigateUrl = EMSApplication.Web.Utils.NavigationUtils.GetLoginErrorDialogURL(); 
    LoginErrorWindow.VisibleOnPageLoad = true; 
    } 
} 

이제 한 번의 로그인 실패 후 나는 방법 EMSLogin_Authenticate 다시 실행 새로 고침 버튼을 누르면. 그리고 다시로드하기 전에 그것을 보여주고있다 :

enter image description here

가 어떻게이 문제를 해결할 수 있습니까?

답변

3

로그인 실패 후 오류 페이지에 Response.Redirect을 입력하십시오.

위키 백과의 PRG pattern을 참조하십시오.

Post/Redirect/Get (PRG)은 중복 양식 제출을 방지하여 사용자 에이전트 (사용자)를위한보다 직관적 인 인터페이스를 만드는 웹 개발 디자인 패턴입니다. PRG는 중복 양식 제출을 생성하지 않는 예측 가능한 방식으로 책갈피와 새로 고침 단추를 구현합니다.

관련 문제