我们有一个视图 (.cshtml),它使用 ASP.NET MVC 3 为 RSS 提要呈现 XML,效果很好。现在我们已经升级到带有 Razor 2 的 ASP.NET MVC 4,它会产生编译错误,类似于下面。
Parser Error
Description: An error occurred during the parsing of a resource required to service this request. Please review the following specific parse error details and modify your source file appropriately.
Parser Error Message: Encountered end tag "item" with no matching start tag. Are your start/end tags properly balanced?
标签是适当平衡的。
有人有什么想法吗?
更新:我已将其隔离在 @foreach (...) { ... } 块中item元素内的链接元素中。
@foreach (var item in Model.Items)
{
<item>
<title>@item.Title</title>
<link>@item.Link</link>
<description>@item.Description</description>
<guid>@item.Guid</guid>
@if (item.PublishedDateUtc.HasValue)
{
<pubDate>@item.PublishedDateUtc.Value.ToString("ddd, dd MMM yyyy HH:mm:ss") GMT</pubDate>
}
</item>
}
我通过使用下面的@Html.Raw来修复它。
@foreach (var item in Model.Items)
{
<item>
<title>@item.Title</title>
@Html.Raw(string.Format("<link>{0}</link>", item.Link.ToHtmlEncoded()))
<description>@item.Description</description>
<guid>@item.Guid</guid>
@if (item.PublishedDateUtc.HasValue)
{
<pubDate>@item.PublishedDateUtc.Value.ToString("ddd, dd MMM yyyy HH:mm:ss") GMT</pubDate>
}
</item>
}
有人有更好的建议吗?显然,我可以只使用一个类来声明模型并直接从控制器返回 XML,但我更感兴趣的是为什么会发生这种行为以及我可以做些什么来更好地符合 Razor 语法。