2012-10-24 3 views
1

Im이 데이터를 데이터베이스에 삽입하는 웹 폼을 만들었습니다. 삽입 버튼을 클릭하면 데이터 삽입 코드가 실행되고 데이터를 성공적으로 삽입 한 후 "데이터 삽입 성공"이라는 다른 페이지로 리디렉션됩니다. 이ASP.NET/C에서 데이터를 삽입 한 후 페이지 리디렉션

INSERT 페이지 .....

if (CodeClass.InsertData(txtFirstName.Text, txtLastName.Text, Gender) == true) 
    { 
     String A = "InsertSuccess"; 

      Response.Redirect("OtherPage.aspx?&lnk=" + A); 
    } 

기타 PAGE .... 내가 다른 페이지에도 액세스 할 때

String link = null; 
      link = Request.QueryString["lnk"]; 
      if (link == "InsertSuccess") 
      { 
       txtLabel.Text = "Record inserted succesfully!"; 

      } 

내 문제는 ...이 같았다 삽입 페이지를 사용하지 않았습니다. 동일한 결과가 나타납니다. 내가 입력 한 말 ..http : // localhost : 8672/OtherPage.aspx? & lnk = 주소 표시 줄의 InsertSuccess .. "레코드가 성공적으로 삽입되었습니다!" 상표. 다른 페이지가 "레코드가 성공적으로 삽입되었습니다!"라고 절대로 표시하지 않겠습니까? 메시지를 실제로 삽입하지 않았지만 브라우저의 주소 표시 줄을 통해 액세스 할 때

+3

왜 다른 페이지로 리디렉션하고 싶습니까? 상태 메시지 만 표시하려면 Visible 속성을 false로 설정하여 Form에 Label을 추가하기 만하면됩니다. 레이블 텍스트를 설정 한 데이터를 삽입 한 후이를 보이게하고 삽입 양식을 보이지 않게하십시오. 이렇게하면 작은 메시지 하나만으로 전체 페이지를 저장할 수 있습니다. – mboldt

+0

아주 실용적인 제안 주셔서 감사하지만 이것이 내 진짜 목적은 페이지가 웹 사이트 리디렉션을 통해로드되었고 링크를 직접 방문하지 않도록하는 방법입니다. 유용한 제안 비록 :) –

답변

2

세션 변수를 사용하여 업데이트 된 상태를 저장 한 다음 otherpage.aspx에서 사용할 수 있는지 확인하고 텍스트 상자를 업데이트하고 재설정 할 수 있습니다.

페이지 삽입

if (CodeClass.InsertData(txtFirstName.Text, txtLastName.Text, Gender) == true) 
    { 
      Session["status"]="InsertSuccess"; 


      Response.Redirect("OtherPage.aspx"); 
    } 
} 

다른 페이지 당신이 그냥 "HTTP 입력하여 메시지를 얻을 싶지 않는 무엇을보고 잘

if (Session["status"]!=null) 
     { 
      txtLabel.Text = "Record inserted succesfully!"; 
      Session["status"]=null; 

     } 
+0

고마워! 정말 많은 도움이되었습니다! :) –

1

: // localhost를 : 8672/OtherPage.aspx &을 lnk = InsertSuccess "를 입력하면 플래그가있는 문자열을 전달하는 대신 레코드 ID를 전달한 다음 다른 페이지에서 레코드 ID가 실제로 테이블에 있는지 확인해야합니다.

GUID 유형으로 ID로 작업하기를 바랍니다.

이 뭔가를해야합니다 :

에 "http : // localhost를 : 8672/OtherPage.aspx & LNK = BBB5259E-F5A3-4271-ABC8-D95A00BE9770"그렇지 않으면

이 될 것 너무 int ID를 기억하기 쉽습니다.

+0

이 접근법은 Windows Azure로 작업 할 때 여러 인스턴스를 가질 수 있고 변수를 지속적으로 저장해야 할 때 유용하지만 세션 변수로 볼 때 충분합니다. –

+0

oic 아직 새 asp.net 아마 내가 언젠가 그것을 위해 노력하고있을거야 :) –

0

쿼리 문자열을 변경해야합니다.

Response.Redirect("OtherPage.aspx?&lnk=" + A); 

는 같아야

Response.Redirect("OtherPage.aspx?lnk=" + A); 

'&'기호가 인코딩되지 파라미터 분리기로 처리된다.

주석의 요청에 따라
Response.Redirect("OtherPage.aspx?lnk=" + A + "&secondParam=someValue"); 

:
SO post
MSDN HttpServerUtility.UrlEncode
.NET Slave - Working with query strings

를 참조하고 String.IsNullOrWhiteSpace() 때때로 편리 할 수 ​​있습니다.

+0

감사합니다.이 게시물을 주셔서 감사합니다. 사실 나는 querystrings로 작업에 대한 아주 작은 아이디어가 있습니다. 방금 다른 프로젝트에서 복사했습니다. 이것은 매우 도움이됩니다! 이 작업에 대한 몇 가지 링크를 물어봐도 될까요? 나는 정말 완전히 asp.net에 새 오전 어쨌든 고마워요 :) –

+0

@EmmanuelGabion 대답의 몇 가지 링크를 추가했습니다. – scheien

0
if (CodeClass.InsertData(txtFirstName.Text, txtLastName.Text, Gender) == true) 
    { 
     HttpContext.Current.Items["A"]= "Inserted Successfully"; 

      Server.Transfer("OtherPage.aspx); 
    } 



string ContextData =(string) HttpContext.Current.Items["A"]; 

if(!string.Empty(ContextData)) 
{ 
Label1.Text = ContextData; 
} 
0

당신이 당신의 URL를 해결하고 제거 가정은 "&"다음에 "?" .. "&"

브라우저 캐시에 대해 생각해 보셨습니까? 때로는 캐시가 이것을 할 수 있고 나는 캐시 설정 때문에 당신과 비슷한 문제로 고생했습니다.

+0

여전히 완전히 새로운 asp.net. 이것은 흥미로운 것 같습니다! 브라우저 캐시 .. 나는이 일이 앞으로도 계속 될 것이라고 생각합니다. 감사합니다. –