剃刀2(它随MVC4)似乎不与剃刀1(来自MVC3)完全向后兼容的。
自从升级,我发现了一个错误:
所述“td@Html.Raw(计数”元素未封闭,所有元件必须是自封闭的或具有匹配的结束标记。
造成这种情况的代码为:
<td@Html.Raw(count == null ? null : " class='has-item'")>
如何解决这个?
剃刀2(它随MVC4)似乎不与剃刀1(来自MVC3)完全向后兼容的。
自从升级,我发现了一个错误:
所述“td@Html.Raw(计数”元素未封闭,所有元件必须是自封闭的或具有匹配的结束标记。
造成这种情况的代码为:
<td@Html.Raw(count == null ? null : " class='has-item'")>
如何解决这个?
对于MVC 4剃刀解析器重新写的, 大概是因为 :
在HTML5的规范中明确指出,未关闭的HTML标签的支持,但剃刀V1没有一个足够先进分析器来支持这一点。 剃刀V2现在支持这个与W3C的规范中列出的元素。
这里最简单的解决方案是之前添加一个空格@
符号:
<td @Html.Raw(count == null ? null : " class='has-item'")>
然而,与MVC 4剃刀条件属性有一个更优雅的语法。
<td class="@(count == null ? null : "has-item")">
当属性值解析为null
,则该属性从元件省略。 所以这个标记的输出可以是:
<td>
...要么...
<td class="has-item">
MVC4的剃刀解析器是MVC3不同。 剃刀V3是具有先进的解析器的功能和在另一方面严格的分析比较MVC3。
而转换到MVC3如果MVC4你没有按照正确的方式使用剃刀语法您可以在视图中遇到语法错误。
的未在剃刀V2允许一些常用剃须刀代码错误的解决方案是:
- >避免使用在视图服务器块,除非有变量声明部分。
Don’t : @{if(check){body}}
Recommended : @if(check){body}
- >避免使用@时,你已经在服务器范围内。
Don’t : @if(@variable)
Recommended : @if(variable)
Don't : @{int a = @Model.Property }
Recommended : @{int a = Model.Property }