首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RazorEngine奇怪编译异常

RazorEngine奇怪编译异常
EN

Stack Overflow用户
提问于 2014-03-09 11:03:37
回答 2查看 550关注 0票数 0

我有一个使用RazorEngine v3.4.1的模板:

代码语言:javascript
复制
@{ var Title = Model.Page.Title ;
                   var Description = Model.Page.Description;
                   var Articles = Model.Site.Articles;
                   var SiteUrl = Model.Site.WebsiteUrl;
             }
<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
 <title>@Title</title>
 <description>@Description</description>
 <link>@SiteUrl</link>
 <lastBuildDate>@DateTime.Now</lastBuildDate>
 <pubDate>@DateTime.Now</pubDate>

@foreach(var Article in Articles){
  <item>
    <title>@Article.Title</title>
    <description>@Article.Description</description>
    <link>@Article.Url</link>
    <guid>@Article.Url</guid>
    <pubDate>@Article.Date.ToString()</pubDate>
  </item>
}
</channel>
</rss>

当我试图编译它时,它抛出TemplateParsingException,它说:

"item“元素未关闭。所有元素必须是自关闭的或具有匹配的结束标记.

当我从模板中删除这一行时:

代码语言:javascript
复制
<link>@Article.Url</link>

它编译得很好,没有任何问题,结果和预期的一样.

我做错了什么?

EN

回答 2

Stack Overflow用户

发布于 2014-03-31 15:11:03

MS在Razor 2中增加了对HTML5空元素的支持,这就是为什么您会看到这个问题。最简单的解决方案就是转义标记,以便Razor将它们看作文字,即@:

适用于此的元素的完整列表(取自System.Web.Razor.Parser.HtmlMarkupParser)

代码语言:javascript
复制
    "area",
    "base",
    "br",
    "col",
    "command",
    "embed",
    "hr",
    "img",
    "input",
    "keygen",
    "link",
    "meta",
    "param",
    "source",
    "track",
    "wbr"
票数 1
EN

Stack Overflow用户

发布于 2015-11-06 08:34:26

剃刀检查HTML5的兼容性,并且链接标签与内容是无效的,因为它是void元素。有关HTML元素的更多信息:http://w3c.github.io/html-reference/syntax.html#void-element

以下是HTML中空元素的完整列表: 区域,基地,br,col,命令,嵌入,hr,img,输入,keygen,链接,元,param,源,跟踪,wbr

在RazorEngine 中,无需使用@Html.Raw之类的MVC Html助手的解决方案是添加以下内容之一:

代码语言:javascript
复制
@(new RazorEngine.Text.RawString("<link>" + Article.Url + "</link>"))

@Raw("<link>" + Article.Url + "</link>")

另外,如果希望使用像@Html.Raw这样的语法,则可以使用自己的类扩展模板语法,如doc https://matthid.github.io/RazorEngine/TemplateBasics.html#Extending-the-template-Syntax中所示。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22281377

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档