2010-05-13 5 views
1

저는 이것이 ASP.Net에 관해서 가장 단순한 질문이었습니다.하지만 당황 스럽습니다. 나는 내 방문자가 이름, 주소 등을 입력 할 양식을 가지고 있습니다. 그런 다음 제출 버튼의 PostBackUrl 속성을 통해 양식을 다른 페이지로 게시합니다. 여기서 필드는 모두 새로운 숨겨진 필드로 재구성되어야합니다. Paypal에 다시 게시되었습니다.게시 된 양식의 컨트롤 값을 검색하려면 어떻게해야합니까?

내 문제는 원래 페이지의 방문자가 입력 한 값을 얻을 수 없다는 것입니다. "runat = 'server'"에 넣을 때마다 ASP.Net은 컨트롤의 ID를 완전히 변경하여 액세스 방법을 알아내는 것을 불가능하게 만듭니다. 게시 된 양식에서 나는 Request.Form["_txtFirstName"]을 시도했는데 null이되었습니다. 그런 다음 ((TextBox)PreviousPage.FindControl("_txtFirstName")).Text을 시도했는데 그 역시 null입니다. 나는 그것들에 변이를 시도했다. 나는 어떻게 내가이 통제에 가야 하는지를 알 수 없다. 왜이 물건들이 그렇게 어려운 것이 필요한가요?

답변

0

것은 당신이 MasterPages를 사용하고 있습니까? 그렇다면, 당신은 내용 자리 내부의 제어를 검색 할 수 있습니다

또한
ContentPlaceHolder placeholder = (ContentPlaceHolder)Page.PreviousPage.Master.FindControl("ContentPlaceHolder1"); 

TextBox previousPageTextBox = (TextBox)placeholder.FindControl("TextBox1"); 
+0

이것은 또한 매우 좋은 점입니다 –

+0

와우, 그건 정말로 문제였습니다. 이 얼마나 악몽인가. 감사합니다 patmortech! –

0

첫 번째 페이지의 TextBox 컨트롤 이름은 무엇입니까? clientId를 사용하지 말고 FindControl을 호출 할 때 선언 된 ID를 사용하십시오. ID = "TextBox1"이라면 아래 코드를 사용하십시오.

두 번째 접근 방식은 Page.PreviousPage를 놓친 것을 제외하고는 괜찮습니다. 그래도 결과에 영향을주지 않아야합니다. 추적을 켜셨습니까? 컨트롤이 서버 측 컨트롤 인 경우

이 대상 페이지에 배치 문서에서 표준 구문입니다 ...

ASP.NET에서
if (Page.PreviousPage != null) 
{ 
    TextBox SourceTextBox = 
     (TextBox)Page.PreviousPage.FindControl("TextBox1"); 
    if (SourceTextBox != null) 
    { 
     Label1.Text = SourceTextBox.Text; 
    } 
} 
+0

는, 마스터 페이지 –

+0

잘 컨트롤 ID가 서버 측 _txtFirstName 약 patmortech의 답변을 참조하십시오. 그러나 다음 페이지로 갈 때, Request.Form ("_ txtFirstName")을 수행하면 null 결과가 생성됩니다. 컨트롤의 배열을 보면 컨트롤이 ctl00 $ _contentPlaceHolder1 $ _txtFirstName 인 것을 알 수 있습니다. 분명히 인식 할 수 없습니다. POST를 사용하면 Request.Form()을 사용하여 내 문제를 해결할 수 있다고 생각했습니다 (이전에는 Response.Redirect를 수행했지만 Request.Form 내용은 없었습니다). ID가 모두 변경된 것을 예상하지 못했습니다. PreviousPage는 작동 상태가 좋지만 (아래 답변 참조) 2.0 이전에는 무엇을 했습니까? –

0

, 당신은 단순히 주어진 ID에 의해 호출 렌더링 할 때가 아니라 코딩 할 때.

마크 업 :

<input type="text" id="myId" runat="server" /> 

코드 숨김

string controlValue = myId.Value; 
관련 문제