HTML敏捷性包创建的保存HTML文件在C#中的字符无关(Html Agility Pack cre

2019-10-17 10:59发布

我使用asp.net MVC3 C#项目工作。 我想改变一些HTML元素

通过C#等的宽度,高度等属性我有一个简单(_Layout.cshtml)文件

    <html> <head>
    <link href="@Url.Content("file.css")" rel="stylesheet" type="text/css" />
    <body>

     <a href="#" id="link1" title="@Function.ConfigElement("FacebookLink")" ></a>

     </body>
    </head> </html>

所以我用HTML敏捷包加载和保存此文件

HtmlDocument doc= new HtmlDocument();

doc.load("_Layout.cshtml");

doc.GetElementbyId("link1").Attributes.Add("title", "@Function.ConfigElement("NewLink")");

doc.save("_Layout.cshtml");

保存后的文件输出是这个样子

<html> <head>
        <link href="@Url.Content("file.css")"="" rel="stylesheet" type="text/css" />
        <body>

         <a href="#" id="link1" title="@Function.ConfigElement("NewLink")"="" ></a>

         </body>
        </head> </html>

(link href)(anchor title)节省一些额外的字符

如何避免这个问题..是否有解析HTML在C#中asp.net mvc的任何其他解决方案。

其实我想在这些HTML元素属性添加一些服务器端功能

Answer 1:

作为StackOverflow的语法高亮提示巧妙,你的HTML是非常无效的。

href="@Url.Content("file.css")"

这实际上是两个属性: href="@Url.Content("file.css")" (没有值)

你不能使用HTML解析器来解析剃刀标记。
相反,你应该用实际的剃刀解析器。



Answer 2:

CSCHTML 不是 HTML。 这是CS的组合,特殊脚本和HTML可选 - 所以HtmlAgilityPack不是读/操纵它的好工具。

为什么会发生,特别是:

<link href="@Url.Content("file.css")" 

形式着眼HTML点有2个属性和(href和file.css),加上怪“)”意外文本。 不知怎的,AgilityPack试图利用它,无论您有输出感。



文章来源: Html Agility Pack creating irrelevant characters on save html file in c#