2011-08-09 2 views
0

임 암호 재설정 기능을 구현하려고합니다. 첫 번째 사용자는 양식에 전자 메일을 입력합니다. 그런 다음 제출을 클릭하십시오. 서버 측에서는 전자 메일이 올바른지, 사용자가 데이터베이스에 있는지, 그렇다면 다음 페이지로 리디렉션되는지 확인합니다 (실제로는 퀘스트 문자열 매개 변수? step = 2와 동일한 페이지입니다).페이지간에 데이터 전달하기 asp.net

loadBalancer 때문에 세션을 사용할 수 없습니다. 사용자의 메일을 보관하는 가장 좋은 방법은 무엇입니까? 어떤 도움

+1

당신은하지 않습니다? – Saeed

+0

[데이터베이스 지원 세션 상태] (http://support.microsoft.com/kb/317604)를 사용할 수 있습니다. 하지만 리디렉션하는 이유는 무엇입니까? 페이지를 렌더링하기 위해 전송을 사용할 수 없으며 페이지에 쓸 이메일 주소가 아직 남아 있습니까? – Rup

+0

이해가 안됩니다. 전송을 사용한다는 것은 무엇을 의미합니까? – gruber

답변

1

에 대한

덕분에이 같은 페이지 인 경우 그것은 매우 사소한해야한다. 당신은 당신의 버튼 클릭 핸들러에서, 그래서 숨겨진 입력 필드를 추가하고 폼에 추가 할 수 있습니다 : 기존 서버 컨트롤이 말할 경우

protected void Button1_Click(object sender, EventArgs e) 
{ 
    string email = email.Text; 
    //Check database etc 

    HtmlInputHidden hidden = new HtmlInputHidden(); 
    hidden.Value = email; 
    hidden.ID = "hiddenemail"; 
    form1.Controls.Add(hidden); // Where form1 is the ID of a form with runat=server 
} 

또는 더 나은 이벤트 당신을 사용할 수있는 라벨은 할 것 :

protected void Button1_Click(object sender, EventArgs e) 
{ 
    string email = email.Text; 
    //Check database etc 
    Label1.Text = email; // Where Label1 is the ID of a ASP:Label on your page 
} 
+0

사실 내 답변을 무시하고, 분명히 질문을 올바르게 읽지 못했습니다. –

1

어떤 이유에서든 Postback을 사용하지 않고 Session을 사용할 수없는 경우, 유일한 해결책은 querystring에 전자 메일을 포함시키는 것입니다. 그것은 반드시 리디렉션 수없는 경우

Response.Redirect("MyPage.aspx?step=2&email=" + Server.UrlEncode(emailaddr));

제임스 헤이의 답변을 참조하십시오.

0

솔직히 여기서 문제를 이해하지 못합니까?

데이터베이스에 전자 메일이있는 경우 데이터베이스의 다른 모든 정보도 있어야합니다. 따라서 모든 재로드 페이지 등을 건너 뛰고 <asp:Panels> 또는 <asp:Views>을 visible = false/true 사이의 스왑으로 사용하면 페이지를 다시로드 할 수있는 다시 게시가 필요 없습니다.

예 당신은 데이터베이스에 이메일을

if(email == emailFromDB) 
{ 
    panelStep1.visible=false; 
    panelStep2.visible=true; 

    // Insert information into whatever controls you have in mind. 
} 
관련 문제