2012-08-03 3 views
1

이미로드 된 페이지의 div에 렌더링 할 웹 컨트롤이 있습니다. 이것은 사용자가 메뉴에서 하이퍼 링크를 클릭 할 때 발생해야합니다.웹 컨트롤을 동적으로 렌더링 할 수 있습니까?

웹 컨트롤에는 C# 코드에서 동적으로 추가되는 몇 가지 JavaScript 파일이 있습니다.

또한 aspx 파일을 사용하지 않으며 웹 컨트롤을 일반 html 페이지로로드하려고합니다.

내가 웹에서 유용한 것을 찾는데 어려움을 겪고있는 상황에서이 작업을 수행하는 가장 좋은 방법이 무엇인지 나에게 기사를 보내주십시오. 어떤 도움을 주셔서 감사합니다.

답변

2

문자열에서 컨트롤을 동적으로 렌더링하고 문자열을 다시 div에 배치 할 수 있습니다. 아약스를 사용하면 코드를 호출하여 컨트롤을 렌더링하고 결과를 반환 할 수 있습니다.

// load the control 
    var oCConrol = Page.LoadControl("CustomControl.ascx"); 

    // here you need to run some initialization of your control 
    // because the page_load is not loading now. 

    // a string writer to write on it 
    using(TextWriter stringWriter = new StringWriter()) 
    { 
     // a html writer 
     using(HtmlTextWriter renderOnMe = new HtmlTextWriter(stringWriter)) 
     { 
     // now render the control inside the htm writer 
     oCConrol.RenderControl(renderOnMe); 

     // here is your control rendered output. 
     strBuild = stringWriter.ToString(); 
     } 
    } 

대신에 컨트롤이있는 빈 빈 aspx 페이지를 만들고 Ajax를 사용하여 동일한 결과를 얻을 수 있습니다. 결과는 다시 컨트롤이 될 것입니다.

자바 스크립트는 어떻게 어려워지고 제어 할 수 없습니다. 텍스트를 다시 보내고 컨트롤 내에서 javascript로 실행하도록 만들 수 없습니다.이 작업은 별도로 수행해야합니다.

+0

안녕하세요, aspx 파일을 사용하지 않으므로 Page.LoadControl을 호출 할 수 없으므로 일반 HTML 파일에서이 작업을 수행 할 수 있습니까? – Xerxes

+0

@xerxes 미안하지만 나는 그 대답을 모른다. – Aristos

0

별도의 독립 실행 형 .aspx 페이지와 Jquery ajax를 작성하여 비슷한 작업을 수행했습니다. Jquery ajax를 사용하여 .aspx 페이지를 호출하고 렌더링 된 모든 HTML을 해당 페이지에서 ajax 응답을 통해 반환하십시오.

내가 아는 한 .aspx 페이지의 컨텍스트 외부에서 웹 컨트롤을 렌더링 할 방법이 없습니다.

관련 문제