2013-04-01 2 views
0

.NET에서 기본적으로 클라이언트 쪽 ID는 서버 쪽 컨트롤에 대해 생성 된 텍스트와 연결됩니다.HttpWebRequest.GetResponse가 서버 쪽 컨트롤에 대해 AutoID를 반환하지 않습니다.

예를 들어

:

<asp:TextBox ID="txtUser" runat="server"> 

이 될 것입니다 ...

<input type="text" id="ctl00_body_txbUser"> 

내가 같은 페이지를 요청하는 HttpWebRequest.GetResponse (objReq.Getresponse, HttpWebResponse 클래스)를 사용할 때 항목이 온다 자동 생성 된 텍스트없이

<input type="text" id="txbUser"> 

는 그것이 자동으로 응답이 ID의 .NET 서버 측 컨트롤에 사용하는 생성 반환하는 방식에서의 HttpWebRequest 객체와하는 GetResponse를 사용할 수 있습니까?

이전에 ID와 관련된 번역 규칙을 설정 한 제 3 자와 협력 중이며 이제는 페이지에서 생성 된 문자열을 전달한 API 호출에 대해 동일한 규칙을 적용하려고 시도하고 있습니다. 그러나 페이지에서 생성 된 문자열에는 동일한 ID가 없습니다.

다음은 웹 페이지를 문자열로 반환하는 데 사용되는 코드입니다.

Public Shared Function GetWebPageAsString(ByVal strURI As String, ByVal strPostData As String) As String 
    ' Declare our variables. ' 
    Dim objHttpRequest As HttpWebRequest 
    Dim PostBuffer() As Byte 
    Dim PostDataStream As Stream = Nothing 
    Dim objHttpResponse As HttpWebResponse = Nothing 
    Dim objStreamReader As StreamReader = Nothing 
    Dim strResponseText As String = "" 
    Try 
     ' Create a new request. ' 
     objHttpRequest = CType(WebRequest.Create(strURI), HttpWebRequest) 
     objHttpRequest.Timeout = 3000000 
     objHttpRequest.Method = "POST" 
     PostBuffer = Encoding.ASCII.GetBytes(strPostData) 
     objHttpRequest.ContentType = "application/x-www-form-urlencoded" 
     objHttpRequest.ContentLength = PostBuffer.Length 
     PostDataStream = objHttpRequest.GetRequestStream 
     PostDataStream.Write(PostBuffer, 0, PostBuffer.Length) 
     PostDataStream.Close() 
     ' Get the response to our request as a stream object. ' 
     objHttpResponse = CType(objHttpRequest.GetResponse, HttpWebResponse) 
     ' Create a stream reader to read the data from the stream. ' 
     objStreamReader = New StreamReader(objHttpResponse.GetResponseStream, Encoding.UTF8) 
     ' Copy the text retrieved from the stream to a variable. ' 
     strResponseText = objStreamReader.ReadToEnd() 
     ' Close our objects. ' 
     objStreamReader.Close() 
     objHttpResponse.Close() 
    Catch ex As Exception 
     strResponseText = strURI & " | " & strPostData 
     Throw (ex) 
    Finally 
     If Not objStreamReader Is Nothing Then 
      objStreamReader.Close() 
     End If 
     If Not PostDataStream Is Nothing Then 
      PostDataStream.Close() 
     End If 
     If Not objHttpResponse Is Nothing Then 
      objHttpResponse.Close() 
     End If 
     objHttpRequest = Nothing 
     PostBuffer = Nothing 
     PostDataStream = Nothing 
     objHttpResponse = Nothing 
     objStreamReader = Nothing 
    End Try 
    ' Set return value. ' 
    Return strResponseText 
End Function 

편집 : 그냥 명확히하기 위해, 나는 자동 .NET에 의해 생성 계속하기 위해 ID를해야합니다. 모드를 Static (정적)으로 설정하여이 둘을 동일하게 만들 수 있음을 이해합니다. 안타깝게도 우리가 작업하는 제 3 자 (Party)는 이미 .NET에서 생성 된 ID를 기반으로 현재 페이지의 규칙을 만들었습니다. HTTPRequest 객체를 사용하여 동일한 페이지를 요청하고 데이터를 스트림으로 푸시합니다. 동일한 페이지인데도 자동 생성 ID가 더 이상 표시되지 않습니다..

답변

1

깨끗한 마스터 페이지를 만들어 페이지를 넣습니다. 그러면 ID 문제가 해결됩니다.

+0

고마워, 그 트릭을했다. 나는 HttpWebRequest 객체에서 손가락을 가리키며 바빴다. –