2009-10-16 65 views
1

我想从一个方法在类库(不要问为什么)返回一个HTML字符串。我想在该方法中做的是从我的域中获取一个POCO的实例,然后打开一个html文档(可能来自一个文件或可能是来自其他地方的字符串),然后将POCO传递给文档绑定到POCO属性),然后输出生成的html。绑定POCO到HTML文档,并生成结果为字符串

是否有一个很好的包装,以完成这在.NET框架做了什么?我看到这篇文章上的HTMLDocument类,但希望避免所有的直接元素访问和赋值:

http://msdn.microsoft.com/en-us/library/system.windows.forms.htmldocument.aspx

回答

0

您可以使用模板引擎来实现此目的。第一步是定义包含对象属性值的占位符的HTML模板。然后,您使用模板和一个会产生最终结果的对象来提供模板引擎。以下是使用NVelocity的示例:

class Program 
{ 
    static void Main(string[] args) 
    { 
     Velocity.Init(); 

     // Define a template that will represent your HTML structure. 
     var template = "<html><body><div>$key1</div><div>$key2.ToString('dd/MM/yyyy')</div></body></html>"; 
     var context = new VelocityContext(); 
     // The values you are passing here could be complex objects with many properties 
     context.Put("key1", "Hello World"); 
     context.Put("key2", DateTime.Now); 
     var sb = new StringBuilder(); 
     using (var writer = new StringWriter(sb)) 
     using (var reader = new StringReader(template)) 
     { 
      Velocity.Evaluate(context, writer, null, reader); 
     } 
     Console.WriteLine(sb.ToString()); 
     // This will print: <html><body><div>Hello World</div><div>16/10/2009</div></body></html> 
    } 
} 
+0

就是这样 - 感谢达林! – 2009-10-17 01:12:13

0

我的总的方法是使用合适的XML序列化(的DataContractSerializer或XmlSerializer的)通你的可序列化的 POCO in,接收结果XML;并用XSLT样式表转换以生成输出HTML。

改造管道将是这个样子

POCO     ---- [XmlSerializer的] - >     XML     ------- [XSLT] --- - >     HTML