1

I am working on project using asp.net mvc3 C# . I want to change some html element

attributes by c# like width , height etc. I have a simple (_Layout.cshtml) file

    <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>

So i am using html agility pack to load and save this file

HtmlDocument doc= new HtmlDocument();

doc.load("_Layout.cshtml");

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

doc.save("_Layout.cshtml");

After saving file output is like this

<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>

in (link href) and (anchor title) saving some extra characters

How can i avoid this problem .. Is there any other solution for parse html in c# for asp.net mvc.

Actually I want to add some server side function in these html element attributes

4

2 に答える 2

3

StackOverflowの構文が微妙に示唆しているように、HTMLは非常に無効です。

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

これは実際には2つの属性です: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 に答える