zoukankan      html  css  js  c++  java
  • 基于HSharp使用C#对象建立并输出HTML

    在C#代码中有的时候我们需要返回视图。一般为此往往要专门建立cshtml文档。如果直接在代码中写HTML往往又容易产生语法错误。如果有一种方式能够高效的构建正确的HTML文档,并有效借助C#的强类型特性,那么在需要输出HTML的时候会大大提升效率。这对于ASP.Net和ASP.Net MVC中就可以在控制器中直接渲染生成视图。对于复杂的视图逻辑也可以转移到控制器中完成。

    找了很久,我还是找到了一个比较可行的方法。大概方法是用到了一个叫做HSharp的库。用来以一种弱类型语言的处理方式来应用在C#,处理HTML。能够反序列化和序列化HTML,也不需要建立对应的C#类。

    HSharp在Github上的主页:https://github.com/Obisoft2017/HSharp

    安装:

    PM> Install-Package Obisoft.HSharp 

    仔细观察它,发现它有

     Document.GenerateHTML()

    以及

    public static string SerializeHtml(HDoc Document)

    两个方式来序列化。开始我纳闷很久这有什么区别,在Github上翻了翻代码发现其实是一样的。

    但这两种方式都需要构建HDoc文档。还好构建不算太难。

                var Document = new HDoc(DocumentOptions.BasicHTML);
                Document["html"]["body"].AddChild("div");
                Document["html"]["body"]["div"].AddChild("a", new HProp("href", "/#"));
                Document["html"]["body"]["div"].AddChild("table");
                Document["html"]["body"]["div"]["table"].AddChildren(
                 new HTag("tr"),
                 new HTag("tr", "SomeText"),
                 new HTag("tr", new HTag("td")));
                var Result = Document.GenerateHTML();
                Console.WriteLine(Result);

    上面的代码中构建了基本HTML,然后在Body下面增加了Div。并在Div里增加了a和table。

    同时在Table里增加里三个TR

    输出如下:

    <html>
    <head>
    <meta charset="utf-8"></meta><title>
    Example </title>
    </head>
    <body>
    <div>
    <a href="/#"></a><table>
    <tr></tr><tr>
    SomeText </tr>
    <tr>
    <td></td></tr>
    </table>
    </div>
    </body>
    </html>

    有的时候想,既然这个库这么屌,不如再封装一层,做一个可以让用户在不懂HTML的情况下生产HTML的工具。

    准备再研究研究HSHarp这个库。据说还可以反序列化HTML

  • 相关阅读:
    sharepoint环境的安装及form表单验证等遇到的问题及总结。
    话说在这里开辟个情感专栏怎么样呢?
    Android学习4—短信发送器的实现
    Android学习2项目文件列表简单分析
    Android学习3—电话拨号器
    腾讯内推一面记录
    日程日历示例
    屏幕设配介绍
    深入理解移动开发的模板复用机制
    沉浸屏幕状态栏
  • 原文地址:https://www.cnblogs.com/mma2017/p/5600131.html
Copyright © 2011-2022 走看看