Razor 2(随 MVC4 一起提供)似乎并不完全向后兼容 Razor 1(来自 MVC3)。
自从升级后,我发现一个错误:
The "[电子邮件受保护] /cdn-cgi/l/email-protection(count" 元素未关闭。所有元素必须是自关闭的或具有匹配的结束标记。
导致这个问题的代码是:
<[email protected] /cdn-cgi/l/email-protection(count == null ? null : " class='has-item'")>
解决这个问题的办法是什么?
Razor 解析器针对 MVC 4 进行了重写,大概是因为 http://www.sebnilsson.com/blog/2012/5/21/aspnet-mvc-4-razor-v2-new-features.html:
HTML5 规范明确规定支持未封闭的 HTML 标签,但 Razor v1 没有足够先进的解析器来支持这一点。 Razor v2 现在通过 W3C 规范中列出的元素支持此功能。
这里最简单的解决方案是在前面添加一个空格@
symbol:
<td @Html.Raw(count == null ? null : " class='has-item'")>
然而,MVC 4 中的 Razor 条件属性具有更优雅的语法。
<td class="@(count == null ? null : "has-item")">
当属性值解析为null
,该属性从元素中省略。所以这个标记的输出是:
<td>
...or...
<td class="has-item">
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)