1

我正在使用 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)

我怎样才能避免这个问题.. 是否有任何其他解决方案可以在 c# 中为 asp.net mvc 解析 html。

实际上我想在这些 html 元素属性中添加一些服务器端功能

4

2 回答 2

3

正如 StackOverflow 的语法高亮巧妙地暗示的那样,您的 HTML 非常无效。

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

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

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

于 2012-12-06T19:16:10.067 回答
1

CSCHTML不是HTML。它混合了 CS、特殊脚本和可选的 HTML——因此 HtmlAgilityPack 不是阅读/操作它的好工具。

为什么会特别发生:

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

表单 HTML 来看有 2 个属性和 (href 和 file.css) 加上奇怪的 ")" 意外文本。不知何故,AgilityPack 试图理解它并输出你得到的任何东西。

于 2012-12-06T19:18:36.027 回答