문제

비 HTML을 생성하기 위해 ASP 템플릿 엔진 (부분 코드-비만 클래스, 동적 < % ... %> 블록 등)을 사용할 수 있습니까? 코드를 동적으로 생성 할 수있는 깨끗하고 유지 관리 가능한 방법을 원합니다. (구체적으로, 데이터베이스에서 값으로 채워진 라텍스 코드를 생성하고 싶습니다.)

현재 내 라텍스 템플릿은 데이터베이스 값을 사용하는 자리 표시자가있는 리소스 문자열입니다. 이 솔루션은 빠르게 유지하고 청소하기가 매우 어려워졌습니다. ASPX 마크 업의 동적 블록을 정말로 사용하고 싶지만 a) 출력이 HTML이 아닌 경우 ASPX가 적합한 지 또는 b) 결과를 실제로 .tex 파일로 렌더링하는 방법 .

생성 코드 자체는 C# .dll에 있습니다. .NET 3.5를 사용하고 있습니다

이게 가능해? 미리 감사드립니다.

도움이 되었습니까?

해결책

Visual Studio 2008 기본적으로 또는 Visual Studio 2005 SDK와 함께 제공되는 T4 템플릿은 원하는 것을 거의 생성 할 수 있습니다.

다음 링크에 대한 자세한 정보를 가질 수 있습니다.

나는 그 모든 링크가 당신의 퀘스트에 대한 좋은 시작이라고 확신합니다.

Visual Studio 외부에서 T4 템플릿을 생성하려면 T4 템플릿을 호출하는 사용자 정의 MSBuild 작업이 있습니다 (링크)

다음은 MSBuild 작업의 "실행"코드 샘플입니다. 소스 코드를 보려면 여기를 클릭하십시오:

public override bool Execute()
{
    bool success = false;

    //read in the template:
    string template = File.ReadAllText(this.TemplatePath);

    //replace tags with property and item group values:
    ProjectHelper helper = new ProjectHelper(this);
    template = helper.ResolveProjectItems(template);

    //copy the template to a temp file:
    this._tempFilePath = Path.GetTempFileName();
    File.WriteAllText(this._tempFilePath, template);

    //shell out to the exe:
    ProcessHelper.Run(this, TextTransform.ToolPath, TextTransform.ExeName, string.Format(TextTransform.ArgumentFormat, this.OutputPath, this._tempFilePath));
    success = true;

    return success;
}

다른 팁

왜 안 모르겠어요. 이전 작업에서 내가 알고있는 사람은 ASP.NET 페이지와 리피터 컨트롤을 사용하여 속성을 삽입하여 데이터베이스 래퍼 생성기를 만들었습니다. 그런 다음 문서 내용을 소스 파일에 썼습니다.

ASP.NET에 대해 걱정이되면 적합한 것이 촉진되면 매우 제한된 테스트 케이스를 만들고 직접 볼 수 있습니다. 이론을 테스트하는 데 많은 시간이 걸리지 말고 필요에 맞는지 알려주지 말아야합니다.

확실히 가능합니다. 대부분의 서버 컨트롤은 자동으로 HTML 마크 업을 방출하므로 출시됩니다. 그러나 페이지를 데이터베이션하고 데이터베이닝 표현식을 사용할 수 있습니다. Visual Studio는 유효하지 않은 마크 업에 대해 불평 할 것입니다.

그런 다음 출력을 얻으려면 Cassini 또는 ASP.NET 파이프 라인을 통해 페이지를 실행해야합니다. 어딘가에서 단위 테스트 하네스가있어 놀랍게도 쉽습니다.

더 나은 그러나 아이디어는 아마도 코드 생성기를 사용하는 것일 것입니다. Codesmith와 같은 것은 훌륭하게 작동하거나 Visual Studio의 내장 T4 당신을 HTML에 묶으려고하지 않고 많은 유연성을 제공합니다.

코드 생성의 경우 T4 템플릿 기능을 살펴 봐야합니다. ASP.NET과 유사한 구문을 사용합니다.

Scott Hanselmans 게시물을 참조하십시오.http://www.hanselman.com/blog/t4texttemplatetransformationtoolkitcodegenerationbestkeptvisualstudiosecret.aspx

그래 넌 할수있어. 표준 .aspx 페이지를 작성하고 모든 HTML을 삭제하고 페이지에 원하는 컨텐츠를 배치하십시오. 그런 다음 < % %> 태그를 사용하여 페이지 내에 동적 콘텐츠를 배치 할 수 있습니다. Jason Z가 말했듯이, 리피터 컨트롤을 사용하여 항목 모음을 반복하여 "페이지"에 나열 할 수 있습니다. 또한 HTML을 생성하기 때문에 다른 모든 서버 컨트롤을 사용할 수는 없지만 필요에 따라 자체 서버 컨트롤 및/또는 사용자 컨트롤을 만들 수 있습니다.

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