我试图以编程方式递归地发送所有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();
}
}
Run Code Online (Sandbox Code Playgroud) 我正在迁移一些旧代码,其中HtmlTextWriter广泛用于呈现UI元素.
我正在迁移代码以使用ASP.NET MVC 1.0.据我所知,我没有使用任何HtmlTextWriter特定的功能(如缩进).
目前,我使用包装器方法返回由以下生成的字符串HtmlTextWriter:
var sw = new StringWriter();
var xhtmlTextWriter = new XhtmlTextWriter(sw);
GenerateHtml(xhtmlTextWriter);
return sw.ToString();
Run Code Online (Sandbox Code Playgroud)
我的问题是:
我试图HtmlTextWriter从ASP.NET MVC View 获取实例,但显然即使HtmlHelper也不使用它.我想念什么吗?
每次调用GenerateHtml都会生成小的HTML片段,一般不超过1000个字符,但可能会有很多调用.是否值得将HtmlTextWriter依赖代码重写为StringBuilder?或者相反,如何创建HtmlTextWriter将在所有调用上使用的实例(并在迭代结束时刷新).
使用 HtmlTextWriter 将多个类添加到标签的最佳方法是什么?
我想做的是类似的事情......
writer.AddAttribute(HtmlTextWriterAttribute.Class, "Class1");
writer.AddAttribute(HtmlTextWriterAttribute.Class, "Class2");
writer.RenderBeginTag(HtmlTextWriterTag.Table);
Run Code Online (Sandbox Code Playgroud)
导致...
<table class="Class1 Class2">
Run Code Online (Sandbox Code Playgroud)
我很感激我能做到...
writer.AddAttribute(HtmlTextWriterAttribute.Class, "Class1 Class2");
Run Code Online (Sandbox Code Playgroud)
然而,在动态构建控件时并不总是如此简单。是否有其他方法可以将类“附加”到标签?
我正在为我的服务器控件输出整个HTML,如下所示:
public override void Render(HtmlTextWriter output)
{
output.Write(myStringBuilder.ToString());
}
Run Code Online (Sandbox Code Playgroud)
myStringBuilder是一个StringBuilder对象,它是在一个单独的私有方法中手动构建的.
这是一种有效的方法吗?或者将HtmlTextWriter传递给我的私有方法并对HtmlTextWriter.Write()进行多次调用是否更好?