当前位置:  开发笔记 > 后端 > 正文

使用aspx渲染引擎生成非HTML

如何解决《使用aspx渲染引擎生成非HTML》经验,为你挑选了1个好方法。

是否可以使用asp模板引擎(使用部分代码隐藏类,动态<%...%>块等)来生成非HTML?我希望有一种干净且可维护的方式来动态生成代码.(具体来说,我想生成使用数据库中的值填充的LaTeX代码.)

目前,我的LaTeX模板是带有占位符的资源字符串,我使用数据库值进行字符串替换.这种解决方案很快变得非常难以维护和清洁.我真的很想使用来自aspx标记的动态块,但是我不确定a)当输出不是HTML时,aspx是否会抛出拟合,或者b)如何将结果实际呈现为.tex文件.

生成代码本身位于C#.dll中.我们使用的是.NET 3.5

这可能吗?提前致谢.



1> Maxime Rouil..:

Visual Studio 2008本身或使用Visual Studio 2005 SDK附带的T4模板,您几乎可以生成任何您想要的内容.

您可以在以下链接中获得更多信息:

Scott Hanselman的博客

Rob Conery的博客

Oleg Sych的博客,它是T4示例的完整存储库

约翰丹佛斯的博客

我很确定所有这些链接都是您开展任务的良好开端.

如果要在Visual Studio外部生成T4模板,可以使用自定义MSBuild任务来调用T4模板(链接)

以下是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;
}

推荐阅读
乐韵答题
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有