Dre*_*kes 6 .net asp.net-mvc razor asp.net-mvc-4
Razor 2(与MVC4一起提供)似乎与Razor 1(来自MVC3)完全向后兼容.
自升级以来,我发现了一个错误:
"td@Html.Raw(count"元素未关闭.所有元素必须是自动关闭或具有匹配的结束标记.
导致这种情况的代码是:
<td@Html.Raw(count == null ? null : " class='has-item'")>
Run Code Online (Sandbox Code Playgroud)
这是什么解决方案?
Dre*_*kes 14
Razor解析器是为MVC 4重写的,大概是因为:
HTML5规范明确指出支持未封闭的HTML标记,但是Razor v1没有足够先进的解析器来支持它.Razor v2现在支持W3C规范中列出的元素.
这里最简单的解决方案是在@符号前添加一个空格:
<td @Html.Raw(count == null ? null : " class='has-item'")>
Run Code Online (Sandbox Code Playgroud)
但是,使用MVC 4的Razor中的条件属性具有更优雅的语法.
<td class="@(count == null ? null : "has-item")">
Run Code Online (Sandbox Code Playgroud)
当属性值解析为时null,该元素将省略该属性.所以这个标记的输出是:
<td>
Run Code Online (Sandbox Code Playgroud)
...要么...
<td class="has-item">
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1325 次 |
| 最近记录: |