2012-03-08 2 views
1

나는 ASP.NET C# 웹 사이트를 가지고 있으며 단추를 클릭하면 내 페이지의 HTML에서 내부 HTML을 검색하려고 시도하고 있습니다.runat = "server"특성이없는 경우 HTML 요소 찾기

내 문제 : 필자는 FindControl() 함수를 사용하지만 요소를 찾을 때 null을 반환합니다. 왜 이런 일이 생기고, 내가 뭘 잘못하고 있니?

내 HTML 페이지 :

<%@ Page Title="test" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" 
    CodeBehind="test.aspx.cs" Inherits="test" %> 

<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="ActualContent"> 
    <div class="regMainContainer mainContainer container"> 
      <!-- Attempting to get the below div --> 
      <!-- Knowtice it does not have runat="server", 
       I would prefer not to do that if I dont need to --> 
      <div id="courseDiv" class="courseContainer"> 
      </div> 
    </div> 
</asp:content> 
버튼이 test.aspx.cs 파일 내부에 (클릭하면 실행

내 코드 :

HtmlGenericControl d = (HtmlGenericControl)FindControl("courseDiv"); 

답변

1

의 FindControl는 RUNAT 한 컨트롤을 찾을 수 = " 좋은 소식은 쉽게 div를 패널로 변경하고 데이터를 추가 할 수 있다는 것입니다.

나쁜 소식은 여전히 ​​div의 innerhtml에 액세스 할 수 없다는 것입니다. 그것을 다른 컨트롤의 컨테이너로 간주합니다.

클라이언트 측 스크립트가 내용을 읽어 보시기 바랍니다 그리고 당신은의 FindControl을 사용할 수 없습니다 서버 측 방법

+0

감사합니다. Panel 방식의 예를 제공해 주시겠습니까? 그것은 ...

+0

이 질문에 대한 내 대답보기 : http://stackoverflow.com/questions/9611062/how-to-update-votes-client-side-using-webforms/9611282#9611282 – Evert

1

에 통과 할 수있을 것입니다 때문에, 아약스 어떤 형태의 것이이 작업을 수행하는 가장 좋은 방법 runat = "server"로 표시되지 않은 항목이 있는지 확인하십시오. runat = "server"로 표시되지 않은 요소는 런타임에 하나의 거대한 텍스트 리터럴로 파싱되기 때문입니다. runat = "server"를 임의의 html 요소에 추가 할 수 있습니다.