2012-05-22 3 views
1

그래서 나는 스스로 페이지를 제출하고 오류가 발생하거나 다른 곳에서 성공했을 때 다시 페이지를 리디렉션하려고합니다.양식 자체 제출

VB.NET에서 예제 코드가 작동하지만 C#에서 작동하도록 동일한 코드를 얻으려고합니다. 오류가 Page_Load를 사용하고있는 것처럼 느껴집니다. 다른 전화를 사용해야하는 것 같습니다.

코드가 이제는 무한 리디렉션 루프가 발생합니다. 이는 허용되지 않습니다. 그대로

여기에 코드입니다 :

<% @Page Language="C#" Debug="true" %> 
<% @Import Namespace="System.Web" %> 
<script language="C#" runat="server"> 
    void Page_Load(object sender,EventArgs e) { 
     if(Request.Form["username"] == "admin" && Request.Form["password"] == "password") { 
      HttpContext.Current.Session["username"] = Request.Form["username"]; 
      HttpContext.Current.Session["password"] = Request.Form["password"]; 
      Response.Redirect("elsewhere.html"); 
     } 
     else { 
      Response.Redirect("login.aspx?errors=1"); 
     } 
    } 
</script> 

<!-- #include file="header.html" --> 

<form action="" method="post"> 
    <div id="errors">Incorrect Username or Password</div> 
    <div><span>Username:</span><input name="username" /></div> 
    <div><span>Password:</span><input name="password" type="password" /></div> 
    <div><input type="button" value="Login" id="loginbutton" /></div> 
</form> 

<!-- #include file="footer.html" --> 

감사합니다!

답변

1

무한 리다이렉트 이유는 페이지 처음으로 Request.Form [ "이름"] == "관리자"에 대해로드 및 이들 조건 중 하나가 실행하기 위해 다른 부분이 발생할 때뿐만

Response.Redirect("login.aspx?errors=1"); 

인 . 어떤 login.aspx로드 무한히.

이 문장은 페이지에 포스트 백이있을 때 실행됩니다. 귀하의 코드가 될 것입니다.

if(Page.IsPostBack) 
{ 
    if(Request.Form["username"] == "admin" && Request.Form["password"] == "password") { 
       HttpContext.Current.Session["username"] = Request.Form["username"]; 
       HttpContext.Current.Session["password"] = Request.Form["password"]; 
       Response.Redirect("elsewhere.html"); 
      } 
      else { 

        Response.Redirect("login.aspx?errors=1"); 
      } 
} 
+0

감사합니다. 그게 효과가 있었어! –

+0

당신은 환영합니다 – Adil

2

나는 양식 단지 제출 된 경우에만 화재에 코드를 허용

if (IsPostBack) { 
    //Your code here 
} 

누락 생각합니다.