Dot-Net
使用 Razor 2 在 <link> 元素上編寫 RSS 失敗
我昨天升級到 MVC 4,剛剛發現升級引入的一個錯誤。
我有一個用於生成 RSS 提要的 Razor 視圖。它有一些這樣的標記(簡化):
<item> <title>@post.BlogPost.Title</title> <link>@Url.BlogPost(post.BlogPost, isAbsolute: true)</link> </item>在 Razor 版本 2 中,特別支持HTML5 void 元素。這樣的 void 元素是自閉合的,並且沒有閉合標籤。
不幸的是,
<link>就是這樣一個元素。這意味著上述 Razor 標記不再有效,並且在執行時失敗。刪除結束
</link>標記會刪除解析器錯誤,但這意味著它不再是有效的 RSS。那麼,有沒有辦法解決這個問題,或者 Razor 是否真的只適合生成 HTML5?
我會這樣做:
<item> <title> @post.BlogPost.Title </title> @Html.Raw("<link>") @Url.BlogPost(post.BlogPost, isAbsolute: true) @Html.Raw("</link>") </item>生成的原始碼如下所示:
<item> <title> Google </title> <link> http://www.google.se </link> </item>
現在我使用這個解決方法:
@Html.Raw(string.Format(@"<param name=""{0}"">{1}</param>",Name, Value))