我需要在我的C#代码中生成一个大的HTML页面(不是一个网站,只是一个大型单页HTML报告)。
页面包含多个部分,编译在一个页面中。每个部分都包含CSS样式、JavaScript部分和与其相关的正文。CSS样式是静态部分,脚本和正文部分是使用不同的输入数据(CSV文本)生成的。
我第一个简单的解决方案是创建一个构建器函数来简化所有生成操作:
private static string BuildHtmlPage(string[] cssParts, string[] scriptParts, string[] bodyParts)
{
var htmlPage = "";
htmlPage += @"<!DOCTYPE HTML>
<html>";
htmlPage += "\n<head>";
htmlPage += "\n<style>\n";
foreach (var cssPart in cssParts)
{
htmlPage += cssPart +"\n";
}
htmlPage += "</style>\n";
htmlPage += @"<script type=""text/javascript"">";
htmlPage += "window.onload = function() {";
foreach (var scriptPart in scriptParts)
{
htmlPage += scriptPart + "\n";
}
htmlPage += @"}
</script>";
htmlPage += "\n</head>";
htmlPage += "\n<body>\n";
foreach (var bodyPart in bodyParts)
{
htmlPage += bodyPart + "\n";
}
htmlPage += "\n</body>";
htmlPage += "\n</html>";
return htmlPage;
}
然后生成一个“小型”的HTML部分,并像这样使用它:
var htmlResult = BuildHtmlPage(
new [] {style1, style2 },
new [] {script1, script2, script3 },
new [] {body1, body2, body3 }
);
这使得我的代码变得更加清晰,但由于许多 HTML 代码混杂在 C# 代码中,它仍然看起来很丑陋且难以维护。
您能提出处理此类任务的想法吗?首先,我的意思是将 HTML 代码与 C# 分离。
StringBuilder
而不是将字符串连接起来。 - Camilo Terevinto