2009-10-16 33 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