문제

제품 문서 인 ASP.NET 웹 페이지 (표준 레이아웃이있는)가 많이 있습니다. 다른 모든 페이지 컨텐츠를 가져 와서 하나의 긴 페이지로 연결하는 일종의 조합 페이지를 만들고 싶습니다.

각 페이지의 크기를 모르기 때문에 iframes는 작동하지 않습니다. 조합 페이지가 #includes를 많이 만들 수 있습니다. 이는 작동하지만 마스터 업데이트를 현재까지 유지하고 싶지는 않습니다 (시간이 지남에 따라 변경 될 수있는 페이지 이름 데이터베이스가 있습니다).

궁극적으로 나는 페이지 목록을 얻을 수있는 무언가를 따르는 것이었고, 각 페이지에 대해 해당 페이지의 #include와 동일합니다.

나는 그것이 말이되기를 바랍니다. 이견있는 사람?

도움이 되었습니까?

해결책

"문서 페이지"정적 HTML 또는 .aspx도 ...

정적 콘텐츠만으로도 다음을 수행 할 수 있습니다.

//assume that the array of page names has come from the DB.
protected void Page_Load(object sender, EventArgs e)
{
    string[] pages = new string [] { "~/Default.html", 
             "~/Default2.html", "~/Default3.html", "~/Default4.html" };

    foreach (string p in pages)
    {
        Response.WriteFile(p);
    }
}

다른 팁

귀하의 페이지는 어떻게 생겼습니까?

나는 그것이 단지 평범한 HTML이라고 가정하고 모든 페이지에서 일관된 패턴을 가지고 있다고 가정합니다. 마찬가지로, 머리와 몸과 함께 적절한 HTML 마크 업이 있습니까?

이 경우 일반 텍스트 파일을 읽고 바디 태그 내부 부분을 추출하기 위해 문자열 파싱을하는 것처럼 읽을 수 있습니다. 그런 다음 그것들을 연결하고 스타일을 포함시킬 수 있습니다.

ASP.NET 웹 사이트의 파일에 실제 경로 이름을 얻으려면 사용할 수 있습니다. Server.MapPath

var actualDiskFilename = Server.MapPath("~/somewhere/somepage.html");

모든 System.IO 클래스는 ASP.NET에서 동일하게 작동하여 가상 디렉토리에서 파일 목록을 가져 오면 다음을 수행 할 수 있습니다.

var virtualDir = "~/somefolder/";
var actualDir = Server.MapPath(virtualDir);

var files = Directory.GetFiles(actualDir);

그게 당신이 찾고있는 것입니까?

페이지가 ASPX-Documents 인 경우 사용할 수 있습니다 Server.Execute 페이지를 실행하고 생성 된 HTML을 반환합니다. 그런 다음 HTML을 구문 분석하고 헤드 및 바디 태그를 제거하고 나머지 HTML을 페이지에 연결할 수 있습니다.

크기를 모르기 때문에 iframes가 작동하지 않는다고 말합니까? 크기에 따라 iframes의 크기를 업데이트하지 않겠습니까?

기본 크기 iframe을 만들고 페이지를로드 한 다음 JavaScript 업데이트의 도움으로 크기를로드하십시오. 프로토 타입과 같은 JavaScript 프레임 워크를 보거나 jQuery

가능한 경우 처음부터 형식을 다시 생각 해야하는 것처럼 들립니다. 예를 들어 데이터베이스 또는 XML 파일에 콘텐츠를 저장 한 경우 개별 페이지가 섹션을 제공 할 수 있으며 대기업 페이지에서 원하는 총계의 조합을 제공 할 수 있습니다.

몇 페이지 만 말하는 경우 (12 개 미만) 이야기하는 경우 변환하기가 어렵지 않을 것입니다. 그런 다음 문서를 최신 상태로 유지하는 것은 디스플레이 파일이 아니라 컨텐츠를 편집하는 문제입니다 (XML은 이와 관련하여 XML이 데이터베이스보다 쉽습니다).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top