가끔 ASP.Net으로 작업 할 때 절망적으로 보일 수도 있습니다.ClientID에 액세스하면 포스트 백이 깨집니다.
웹 양식에는 ASP 테이블이 있습니다. ASP 테이블에는 몇 가지 변경을 수행하는 사용자 정의 컨트롤이 있습니다. ASP 테이블에는 텍스트 상자가 있습니다 .... 지금까지 일반의 아무것도!
Page_Load의 일부인 코드에서 일부 자바 스크립트를 등록하기 위해 텍스트 상자의 ClientID에 액세스해야합니다 ... 그래서 자바 스크립트는 필요한 모든 작업을 수행하는 것처럼 보입니다. 모두 행복합니다.
아니, 분명히 모두가 행복하지는 않지만 ASP.Net 자체는 매우 불만입니다! 클라이언트 ID를 액세스하는
는 소스에 나타나는 ID는 다음
myControl_myTextBox
는 클라이언트 ID를 액세스 라인을 주석 것은 이드로 렌더링 의미
ctl00_BodyPlaceHolder_myControl_myTextBox
라인 그 클라이언트 ID에 액세스하는 경우 다음과 같습니다.
jsBuilder.AppendFormat(@"var filter = new TBFilter($(""#{0}"")[0]);", myTextBox.ClientID);
나,하지만 그것은 포스트 백을 깨뜨리는 사실이다. 해당 텍스트 상자에 내용을 입력하고 제출 버튼을 누르면 (페이지에 제출 버튼이 있습니다!) 페이지를 다시로드하지만 텍스트 상자에 기본값을 되돌려 원래 있던 내용을 완전히 무시합니다. 광기 - 나는 이상하고 이상한 일을 아무것도하지 않았으므로 왜 다시 게시판을 망가 뜨 렸는가?
제대로 이해하고 있다면 텍스트 상자의 ClientID 속성은 원래 ctl00_BodyPlaceHolder_myControl_myTextBox이지만 다시 게시 한 후에는 ClientID가 이제 텍스트 상자의 myControl_myTextBox가됩니까? –
죄송 합니다만, ClientID 속성에 액세스하면 myControl_myTextBox에서 ID가 나옵니다. 그러나 해당 행을 주석 처리하면 id가 나옵니다.이 문제를 반영하도록 – Paul
jsBuilder.AppendFormat (@ "var filter = new TBFilter ($ (""# {0} "") [0]); ", myTextBox.ClientID); – Paul