2011-04-03 111 views
4

我有我的winform應用程序4個數據集,從我的數據庫中獲取值。值就像我的產品表中有多少產品以及有關類別的信息。我想知道如何將數據集信息保存在html頁面中。我想創建一個html模板,以便我可以很好地呈現信息。我怎樣才能做到這一點? Eny很好的指導,解釋如何做到這一點?C# - 創建HTML報告

回答

5

這似乎是像RazorEngine一個偉大的工作。您可以定義使用剃刀語法模板,然後使用RazorEngine模板的服務,例如,呈現出內容:

@helper RenderItem(Item item) { 
    <tr> 
    <td>item.Name</td> 
    <td>item.Price</td> 
    </tr> 
} 

<html> 
    <head></head> 
    <body> 
    <table> 
     @foreach (Item item in Model.Items) { 
     @RenderItem(item) 
     } 
    </table> 
    </body> 
</html> 
1

我個人推薦(使用System.Xml.Linq的)

使用LINQ生成HTML到XML

你甚至不需要使用嚴格的XHTML模式,但是你會從Xml.Linq中獲得里程堆積。下面是我自己的代碼庫的代碼段:

#region Table Dump Implementation 

    private static XNode Dump<T>(IEnumerable<T> items, IEnumerable<string> header, params Func<T, string>[] columns) 
    { 
     if (!items.Any()) 
      return null; 

     var html = items.Aggregate(new XElement("table", new XAttribute("border", 1)), 
      (table, item) => { 
       table.Add(columns.Aggregate(new XElement("tr"), 
        (row, cell) => { 
         row.Add(new XElement("td", EvalColumn(cell, item))); 
         return row; 
        })); 
       return table; 
      }); 

     html.AddFirst(header.Aggregate(new XElement("tr"), 
      (row, caption) => { row.Add(new XElement("th", caption)); return row; })); 

     return html; 
    } 

    private static XNode EvalColumn<T>(Func<T, string> cell, T item) 
    { 
     var raw = cell(item); 
     try 
     { 
      var xml = XElement.Parse(raw); 
      return xml; 
     } 
     catch (XmlException) 
     { 
      return new XText(raw); 
     } 
    } 

    #endregion 

    #region Dot Diagrams 

    public void LinkDiagram(Digraph graph, string id) 
    { 
     if (!graph.AllNodes.Any()) 
      return; 
     var img = Path.GetFileName(GenDiagramFile(graph, _directory, id)); 

     _body.Add(
      new XElement("a", 
       new XAttribute("href", img), 
       new XElement("h4", "Link naar: " + graph.name), 
         new XElement("img", 
          new XAttribute("border", 1), 
          new XAttribute("src", img), 
          new XAttribute("width", "40%")))); 
    } 

需要注意的是它非常易於使用的內嵌HTML文本以及(只要它是有效的XML),使用輔助,像這樣:

public void GenericAppend(string content) 
    { 
     if (!string.IsNullOrEmpty(content)) 
      _body.Add(XElement.Parse(content)); 
    } 
0

你想要的東西很容易,所以你可能只是想直接生成HTML,並使用一些預先創建的CSS的樣式。但是,如果你想要更復雜的東西,請看看Windward Reports