C# - 将 HTML 编写为字符串的面向对象方式?

标签 c# html oop htmltextwriter

我正在尝试以编程方式递归地发送目录中所有 dll 文件及其版本的电子邮件。我想使用表格将电子邮件作为 HTML 输出发送。有没有好的面向对象的方法来做到这一点?我不想手写所有标签。

类似于:

private string getHTMLString()
{
    DirectoryInfo di = new DirectoryInfo("some directory");
    FileInfo[] files = di.GetFiles("*.dll", SearchOption.AllDirectories);
    foreach (FileInfo file in files)
    {
        Assembly assembly = Assembly.LoadFile(file.FullName);
        string version = assembly.GetName().Version.ToString();
    }
 }

最佳答案

您可以通过实例化 System.Web.UI.WebControls.Table、添加 TableRows 和 TableCells 然后将 Table.RenderControl 调用到 HtmlTextWriter 中来实现 OO,但公平地说:那会很糟糕 :)

        var tbl = new System.Web.UI.WebControls.Table();

        DirectoryInfo di = new DirectoryInfo("some directory");
        FileInfo[] files = di.GetFiles("*.dll", SearchOption.AllDirectories);
        foreach (FileInfo file in files)
        {
            Assembly assembly = Assembly.LoadFile(file.FullName);
            string version = assembly.GetName().Version.ToString();

            var tr = new System.Web.UI.WebControls.TableRow();
            var tc = new System.Web.UI.WebControls.TableCell();
            tc.Text = HttpUtility.HtmlEncode(version);
            tr.Cells.Add(tc);
            tbl.Rows.Add(tr);
        }

        using (var ts = new StringWriter())
        using (var html = new System.Web.UI.HtmlTextWriter(ts))
        {
            // Not entirely sure about this part
            tbl.RenderControl(html);
            html.Flush();
            string htmlString = ts.ToString();
        }

关于C# - 将 HTML 编写为字符串的面向对象方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2003176/

相关文章:

c# - 不知道 lambda 表达式代表什么

c# - 如何在 C# 中编写 Windows 7 小工具?

html - 边框/框架覆盖 block 内容

javascript - 如何将 HTML 标签添加到 JavaScript 中?

c# - 限制类的实例创建?

php - 最好的 PHP 编程方法?

c# - 当图服务调用返回时,是否不能保证用户已添加到租户中?

c# - LINQ 过滤和聚合

c# - XAML 嵌套绑定(bind) StringFormat

jquery - 隐藏电话表格号码