2011-03-02 5 views
3

사이트를 만들고 있는데 사이트 전체에서 포스트 백에 사용자 입력을받는 방식이 매우 일관 적이 지 않았습니다.
포스트 백에서 제어 텍스트에 액세스하는 기본 방법

protected void btnCalculate_Click(object sender, EventArgs e) 
{ 
    string text1 = textBox1.Text; //one way 
    string text2 = Request["textBox2"]; //the other way 
    lblSum.Text = text1+text2; 
} 

난 당신이 요청 [ ""]를 경우 사용하고자하는 것입니다 상상 예를 들어, 레이블에 문자열 합을 텍스트 상자에서 검색 두 문자열을 받아 그들을 함께 추가하고 출력하는 버튼 이벤트에 말 데이터가 새 페이지에 게시되었지만이 상황에서 다른 페이지보다 선호되는 이유는 무엇입니까?

답변

3

ASP.NET의 출현과 자체 게시 페이지가있는 클래식 ASP 3.0 이후 표준 방식은 // 일방 방식입니다. 즉, Control.Text, Request []는 페이지가 자체에 다시 게시되기 때문에 중복됩니다.

2

포스트 백 동일한 페이지에있는 경우 :

textBox1.Text; 

다른 페이지에 제어 접근하기위한 몇 가지 방법이 있으며, 세션 컨텍스트, PreviousPage. How to Pass Values Between ASP.NET Pages

함께 문자열을 추가하려면,

String.Concat(text1, text2); 

또는

String.Format("{0}{1}",text1, text2); 
+0

오버로드 된 연산자에서 문자열 함수를 사용하여 concat 문자열을 사용해야하는 특별한 이유가 있습니까? –

+0

@Nicklamort : 문자열에 값을 삽입 할 문자열을 concat하려고하면 String.Format가 더 읽기 쉽습니다. – citronas

1

이 패배의 Request[] 현물 웹 양식 아키텍처의 전체 목적을 사용하여 사용합니다. 순전히 실용적인 수준에서, 컨트롤의 ID가 클라이언트와 동일한 서버에서 보장되지 않기 때문에 복잡한 폼에서도 작동하지 않습니다.

단순히 텍스트를 포함하지 않는 컨트롤의 경우 바인딩 된 컨트롤의 업데이트 된 속성에 액세스하는 대신 비 구조적 데이터에 액세스하게됩니다.

어쨌든 ASP.NET의 한 페이지에서 다른 페이지로 게시하면 안됩니다. 아키텍처가 손상되고 대부분의 상황에서이 작업을 수행해야하는 이유는 많지 않습니다.

+0

좋은 정보, thx- –

관련 문제