gpt4 book ai didi

c# - 在 C# 中以编程方式生成 HTML,以打印报告为目标

转载 作者:太空狗 更新时间:2023-10-29 13:53:06 36 4
gpt4 key购买 nike

我接管了一个能够打印信息的 C# (2.0) 代码库。执行此操作的代码非常乏味。元素被绘制到每一页上,用魔法常量表示定位。我想象程序员拿着一把尺子坐着,通过测量和输入位置来设计每一页。是的,人们当然可以想出一些很好的抽象来使这种方法合理化。但我正在寻找一种不同的方法。

我的想法是,我将用生成静态 HTML 页面的代码替换当前打印的代码,将它们保存到文件中,然后在该文件上启动 Web 浏览器。最明显的好处是我不必处理格式设置——我可以让 Web 浏览器使用标签和 CSS 为我做这件事。

所以我正在寻找的是一组非常轻量级的类,我可以使用它们来帮助生成 HTML。我不需要像 HTMLTextWriter 这样重量级的东西。我正在寻找的是避免像这样的片段的东西:

String.Format("<tr><td>{0}</td><td>{1}</td></tr>", foo, bar);

取而代之的是这种感觉:

...
table().
tr().
td(foo).
td(bar)

或者类似的东西。我见过类似其他语言的轻量级类,但找不到 C# 的等效(或更好)类。我当然可以自己写,但我坚信不要重新发明轮子。

知道这样的事情吗?有比这更好的吗?

最佳答案

作为一个想法:为什么要在应用程序代码中组装 HTML?对我来说听起来有点乏味。您可以汇总报告所需的数据,并将其传递给 C# 现有的模板引擎之一(“通常”用于 Web 应用程序)。然后将模板引擎的结果保存到 html 文件中。

我看到这种方法的主要好处:

  • 将 View 与业务逻辑分开
  • html 模板可以由非 C# 开发人员编辑,html/css 知识就足够了
  • 如果 html 更改,无需重新编译应用程序

还没用过,听说Spark View Engine还可以:http://sparkviewengine.com/ (虽然不确定它是否适用于 C# 2.0)

前段时间我用 Gagawa ( http://code.google.com/p/gagawa/ ) 进行了实验(用 PHP),您可以在其中执行以下操作:

$div = new Div();
$div->setId("mydiv")->setCSSClass("myclass");

$link = new A();
$link->setHref("http://www.example.com")->setTarget("_blank");

$div->appendChild( $link );

但很快就放弃了这种有利于模板引擎的方法。

关于c# - 在 C# 中以编程方式生成 HTML,以打印报告为目标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2979517/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com