.net &引用;“元素未关闭”;从MVC3升级到MVC4后出错
Razor2(与MVC4一起提供)似乎与Razor1(来自MVC3)不完全向后兼容 升级后,我发现一个错误: "td@Html.Raw(计数)元素未关闭。所有元素必须是自动关闭的或具有匹配的结束标记 导致这种情况的代码是:.net &引用;“元素未关闭”;从MVC3升级到MVC4后出错,.net,asp.net-mvc,razor,asp.net-mvc-4,.net,Asp.net Mvc,Razor,Asp.net Mvc 4,Razor2(与MVC4一起提供)似乎与Razor1(来自MVC3)不完全向后兼容 升级后,我发现一个错误: "td@Html.Raw(计数)元素未关闭。所有元素必须是自动关闭的或具有匹配的结束标记 导致这种情况的代码是: <td@Html.Raw(count == null ? null : " class='has-item'")> 这个问题的解决方案是什么?Razor解析器是为MVC4重新编写的: HTML5规范明确规定支持未关闭的HTML标记,但Razor v1没有足够
<td@Html.Raw(count == null ? null : " class='has-item'")>
这个问题的解决方案是什么?Razor解析器是为MVC4重新编写的: HTML5规范明确规定支持未关闭的HTML标记,但Razor v1没有足够高级的解析器来支持这一点。Razor v2现在通过W3C规范中列出的元素支持这一点 这里最简单的解决方案是在
@
符号前添加一个空格:
<td @Html.Raw(count == null ? null : " class='has-item'")>
……或者
<td class="has-item">
MVC4的Razor解析器与MVC3不同。 RazorV3具有高级解析器功能,另一方面,与MVC3相比,它具有严格的解析功能 如果未正确使用razor语法,则在将MVC3转换为MVC4时,视图中可能会出现语法错误 razor v2中不允许的一些常见razor代码错误的解决方案包括: -->避免在视图中使用服务器块,除非有变量声明部分
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 }
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 }