2016-07-26 3 views
0

나는이 같은 페이지 방법을 사용하는 경우 : 내가 페이지 방법에서 서버 컨트롤에 액세스하는 방법은 값의 설정 라벨에 액세스 할 수 없습니다페이지 메서드에서 서버 컨트롤에 액세스하는 방법?

[System.Web.Services.WebMethod] 
     public static string GetSearchResult(string searchKeyword) 
     { 
      ArrayList searchResultRows = new ArrayList(); 
      Random random = null; 
      for (int resultCount = 0; resultCount < 10; resultCount++) 
      { 
       random = new Random(resultCount); 
       searchResultRows.Add(string.Concat(searchKeyword, random.Next().ToString())); 
      } 
      GridView resultRepeater = new GridView(); 
      resultRepeater.DataSource = searchResultRows; 
      resultRepeater.DataBind(); 

      StringBuilder stringBuilder = new StringBuilder(); 
      System.IO.StringWriter textWriter = new System.IO.StringWriter(stringBuilder); 
      HtmlTextWriter htmlTextWriter = new HtmlTextWriter(textWriter); 
      resultRepeater.RenderControl(htmlTextWriter); 
      if (HttpContext.Current != null) 
      { 
       Page page = (Page)HttpContext.Current.Handler; 
       Label lbl = (Label)page.FindControl("lbl_test");//null 
       lbl.Text = searchResultRows[0].ToString();//exception 
      } 
      return stringBuilder.ToString(); 
     } 
내 기존 라벨 lbl_test를 업데이트 할

하지만를 ?

+2

방법이 없습니다, 당신은의 WebMethod에서 페이지에서 아무것도 액세스 할 수 없습니다 여기서는 일련의 처리 단계를 수행합니다. 여기에는 초기화, 컨트롤 인스턴스화, 상태 복원 및 유지 관리, 이벤트 처리기 코드 실행 및 렌더링이 포함됩니다. –

+0

간단히 말해서, 당신은 할 수 없습니다. WebMethod는 서버 측입니다. – Furtiro

+0

@TimSchmelter : 고마워요 –

답변

2

HTML

<asp:TextBox ID="txtSearch" runat="server"></asp:TextBox> 
<input id="btnSearch" type="button" value="Search" 
    onclick = "GetSearchResult()" /> 
</div> 

자바 스크립트 : 페이지가 라이프 사이클을 통과하지 않기 때문에

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js" type="text/javascript"></script> 
<script type = "text/javascript"> 
function GetSearchResult() { 
    $.ajax({ 
     type: "POST", 
     url: "CS.aspx/GetSearchResult", 
     data: '{search: "' + $("#<%=txtSearch.ClientID%>")[0].value + '" }', 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: OnSuccess, 
     failure: function(response) { 
      alert(response.d); 
     } 
    }); 
} 
function OnSuccess(response) { 
    alert(response.d); 
} 
</script> 
관련 문제