2010-07-11 3 views
1

우리는 클라이언트에서 HTML 'wrapper'파일을 제공받습니다.이 파일은 내용을 삽입 한 다음 HTML을 렌더링해야합니다.문서의 <head>에 추가하기 위해 프로그래밍 방식으로 HTML 문서를로드하는 방법은 무엇입니까?

콘텐츠가 삽입 된 HTML을 렌더링하기 전에 스크립트 파일, CSS 및 일부 메타 태그에 대한 참조와 같이 클라이언트 래퍼의 <head> 섹션에 몇 개의 태그를 추가해야합니다.

는 그래서 내가 뭘하는

string html = File.ReadAllText(wrapperLocation, Encoding.GetEncoding("iso-8859-1")); 

이며, 지금은 전체 HTML이있다. 그런 다음 해당 문자열에서 사전 정의 된 컨텐트를 검색하고 컨텐트를 삽입 한 다음 렌더링합니다.

HTML 문서의 인스턴스를 만들고 필요에 따라 <head> 섹션을 수정하려면 어떻게해야합니까?

편집 :System.Windows.Forms을 참조하고 싶지 않으므로 WebBrowser를 사용할 수 없습니다.

답변

-1

나는이에 대한 자동화 된 솔루션을 가져올 수 없습니다를, 그래서 해킹에 내려온 :

public virtual void PopulateCssTag(string tags) 
{ 
    // tags is a pre-compsed string containing all the tags I need. 
    this.Wrapper = this.Wrapper.Replace("</head>", tags + "</head>"); 
} 
0

나는 호스트로 컨트롤 WebBrowser을 사용하고 Document 속성을 통해 문서를 탐색/변경합니다.

위의 링크에 멋진 문서 및 샘플.

+2

System.Windows.Forms에 존재하므로 웹 프로젝트에서 참조하는 데 너무 열중하지 않습니다. – DaveDev

1

나는이 라이브러리 나 자신을 시도하지 않은, 그러나 이것은 아마도 법안에 딱 맞는 : http://htmlagilitypack.codeplex.com/

+1

잠시 동안 이걸 가지고 놀았지만 노드를 삽입 할 방법을 찾지 못했습니다. HtmlDocument .. 및 HtmlAgilityPack에 대한 설명서는 그리 좋지 않습니다 !! 어쨌든 고마워. – DaveDev

0

MasterPages를 사용하고 있습니까? 이것은 가장 명백한 용도로 보입니다.

마스터 페이지는 콘텐츠를 가져올 모든 지점에 대해 < asp : ContentPlaceHolder >입니다.

우리는 모든 View() 오버로드를 오버라이드하여 web.config에서 MasterPage의 이름을 읽도록 기본 컨트롤러를 가지고 있습니다. 앱을 커스터마이징하는 것은 새로운 MasterPage만큼이나 간단하며 Controllers 관점에서 보면 Base 클래스가 MasterPage/web.config를 처리하기 때문에 코드가 변경되지 않습니다.

1

https://github.com/jamietre/CsQuery을 사용하여 html dom을 편집 할 수 있습니다.

var dom = CQ.Create(html); 
var dom = CQ.CreateFromUrl("http://www.jquery.com"); 

dom.Select("div > span") 
.Eq(1) 
.Text("Change the text content of the 2nd span child of each div"); 

머리를 선택하고 추가하기 만하면됩니다.