生成 HTML 文件的最简单方法是什么
本文关键字:方法 是什么 最简单 HTML 文件 生成 | 更新日期: 2023-09-27 17:55:36
我正在开发一个控制台应用程序,该应用程序应该吐出一个包含表格和一些javascript的html文档。
我想过用手写 html:
streamWriter.WriteLine("<html>");
streamWriter.WriteLine("<body>");
streamWriter.WriteLine(GetHtmlTable());
streamWriter.WriteLine("</body>");
streamWriter.WriteLine("</html>");
。但想知道是否有更优雅的方法可以做到这一点。大致如下:
Page page = new Page();
GridView gridView = new GridView();
gridView.DataSource = GetDataTable();
gridView.DataBind();
page.Controls.Add(gridView);
page.RenderControl(htmlWriter);
htmlWriter.Flush();
假设我走在正确的轨道上,使用 System.Web.UI.Page
类构建 html 文档的其余部分(即:html、head、title、body 元素)的正确方法是什么?是否需要使用文本控件?
最好使用模板系统来分离演示文稿和业务逻辑。
看看Razor Generator,它允许在非 ASP.NET 应用程序中使用CSHTML模板。
http://razorgenerator.codeplex.com/
我做了很多自动化的HTML页面生成。 我喜欢创建一个带有自定义标签的 HTML 页面模板,在其中插入动态控件、数据或文字。 然后,我将模板文件读取为字符串,并像上面所做的那样将自定义标记替换为生成的 HTML,然后将 HTML 文件写回字符串。 这节省了我为设计模板、css 和支持 JS 创建所有繁琐的支持 HTML 的时间。
模板文件示例
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<CUSTOMHEAD />
</head>
<body>
<CUSTOMDATAGRID />
</body>
</html>
从加载到字符串中的模板文件创建 HTML 示例
private void GenerateHTML(string TemplateFile, string OutputFileName)
{
string strTemplate = TemplateFile;
string strHTMLPage = "";
string strCurrentTag = "";
int intStartIndex = 0;
int intEndIndex = 0;
while (strTemplate.IndexOf("<CUSTOM", intEndIndex) > -1)
{
intStartIndex = strTemplate.IndexOf("<CUSTOM", intEndIndex);
strHTMLPage += strTemplate.Substring(intEndIndex,
intStartIndex - intEndIndex);
strCurrentTag = strTemplate.Substring(intStartIndex,
strTemplate.IndexOf("/>", intStartIndex) + 6 - intStartIndex);
strCurrentTag = strCurrentTag.ToUpper();
switch (strCurrentTag)
{
case "<CUSTOMHEAD />":
strHTMLPage += GenerateHeadJavascript();
break;
case "<CUSTOMDATAGRID />":
StringWriter sw = new StringWriter();
GridView.RenderControl(new HtmlTextWriter(sw));
strHTMLPage += sw.ToString();
sw.Close();
break;
case "<CUSTOMANYOTHERTAGSYOUMAKE />":
//strHTMLPage += YourControlsRenderedAsString();
break;
}
intEndIndex = strTemplate.IndexOf("/>", intStartIndex) + 2;
}
strHTMLPage += strTemplate.Substring(intEndIndex);
try
{
StreamWriter swHTMLPage = new System.IO.StreamWriter(
OutputFileName, false, Encoding.UTF8);
swHTMLPage.Write(strHTMLPage);
swHTMLPage.Close();
}
catch (Exception ex)
{
// AppendLog("Write File Failed: " + OutputFileName + " - " + ex.Message);
}
}