2014-02-12 3 views
0

asp.net을 사용하여 사이트를 만들고 있습니다. 출력을 사용자에게 보내기 전에 내 masterpage, 페이지 및 사용자 컨트롤의 html 출력을 편집 할 수 있기를 원합니다. 프리 렌더 기능을 통해 코드를 편집 할 수있는 몇 가지 기능을 인터넷에서 발견했지만 그 중 아무 것도 작동하지 않는 것 같습니다.사용자에게 보내기 전에 출력 HTML을 편집하십시오.

예를 들어, 내 코드에서 html 주석을 제거하고 싶습니다. 렌더링하기 전에 html에서 일부 정규식 함수를 수행 할 수 있습니까?

+0

웹 서버는 작업이 아닌 배포 프로세스에서 한 번만 수행해야합니다. – Maxim

답변

1

코드가 클라이언트로 렌더링되기 전에 주석을 제거하려는 경우 주석을 변경하는 방법을 변경하십시오. 를 사용하여 서버 측 주석 = <%-- hi --%> :

그래서 : 당신이 실제로으로 렌더링하기 전에 출력 HTML을 편집해야하는 경우,

<!-- Don't remove the <p> below because our stupid clients are too stupid to figure out this form without it --> 
<p>Tip: The field labeled "First Name" is meant for your first name. Don't type in your last name in this box.</p> 

<p>Tip 2: Type your last name in the field labeled "Last Name".</p> 


그러나 :

<!-- Don't remove the <p> below because our stupid clients are too stupid to figure out this form without it --> 
<p>Tip: The field labeled "First Name" is meant for your first name. Don't type in your last name in this box.</p> 
<%-- Don't remove this <p> either because both our clients and our boss are too dumb to figure it out --%> 
<p>Tip 2: Type your last name in the field labeled "Last Name".</p> 

는 다음과 같이 표현 될 것인가 클라이언트를 글로벌 규모로 사용하면 코드에서 수정할 수 없으므로 마스터 페이지에서이 작업을 수행 할 수 있습니다.

protected override void Render(System.Web.UI.HtmlTextWriter writer) 
{ 
    StringWriter sw = new StringWriter(); 
    HtmlTextWriter tw = new HtmlTextWriter(sw); 
    base.Render(tw); 
    string yourHTML = sw.ToString(); 
    // do stuff with yourHTML 
    writer.Write(yourHTML); 
    tw.Dispose(); 
    sw.Dispose(); 
} 
당신은 코드가있는 경우 매우 간단한

그래서,

<h1>I'm a big fat h1</h1> 

당신은 그 함수의 수 : 그래서 지금 그 위의 코드

<h5>I'm a big fat h1</h5> 
로 렌더링됩니다

yourHTML = yourHTML.Replace("<h1>","<h5>"); 
yourHTML = yourHTML.Replace("</h1>", "</h5>"); 

모든 h1 태그를 01로 변경하는 합법적 인 요구 사항을 충족하려면을 브라우저로 렌더링하기 전에

+0

닫힌 스트림에 쓰려고한다는 예외가 발생했습니다. – Jerodev

+0

@ 제로 데브. 흠. 이전에는 그다지 문제가 없었습니다. 나는 대답을 업데이트했다. 도움이되는지 확인하십시오. 지난 몇 줄을 바 꾸었습니다. – MikeSmithDev

+0

여전히 같은 오류가 발생합니다. – Jerodev

0

나는 당신이 찾고있는 것은 내가 출력 코드를보다 쉽게 ​​액세스 할 수 있도록하기 위해 모두 나에게 셰어으로 이전을 사용하고 ControlAdapters

생각합니다. WebConfig에 등록한 다음 렌더링 된 컨트롤을 전달합니다. 이 시점에서 regext를 사용하여 emmited 마크 업을 처리하고 수정할 수 있습니다.

관련 문제