Dot-Net

使用 Razor 2 在 <link> 元素上編寫 RSS 失敗

  • June 18, 2015

我昨天升級到 MVC 4,剛剛發現升級引入的一個錯誤。

我有一個用於生成 RSS 提要的 Razor 視圖。它有一些這樣的標記(簡化):

&lt;item&gt;
   &lt;title&gt;@post.BlogPost.Title&lt;/title&gt; 
   &lt;link&gt;@Url.BlogPost(post.BlogPost, isAbsolute: true)&lt;/link&gt;
&lt;/item&gt;

在 Razor 版本 2 中,特別支持HTML5 void 元素。這樣的 void 元素是自閉合的,並且沒有閉合標籤。

不幸的是,&lt;link&gt;就是這樣一個元素。

這意味著上述 Razor 標記不再有效,並且在執行時失敗。刪除結束&lt;/link&gt;標記會刪除解析器錯誤,但這意味著它不再是有效的 RSS。

那麼,有沒有辦法解決這個問題,或者 Razor 是否真的只適合生成 HTML5?

我會這樣做:

&lt;item&gt;
  &lt;title&gt;
     @post.BlogPost.Title
  &lt;/title&gt;

  @Html.Raw("&lt;link&gt;")
     @Url.BlogPost(post.BlogPost, isAbsolute: true)
  @Html.Raw("&lt;/link&gt;")
&lt;/item&gt;

生成的原始碼如下所示:

&lt;item&gt;
   &lt;title&gt;
       Google
   &lt;/title&gt;

    &lt;link&gt;
        http://www.google.se
   &lt;/link&gt;
&lt;/item&gt;

現在我使用這個解決方法:

@Html.Raw(string.Format(@"&lt;param name=""{0}""&gt;{1}&lt;/param&gt;",Name, Value)) 

引用自:https://stackoverflow.com/questions/12711507