Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net &引用;“元素未关闭”;从MVC3升级到MVC4后出错_.net_Asp.net Mvc_Razor_Asp.net Mvc 4 - Fatal编程技术网

.net &引用;“元素未关闭”;从MVC3升级到MVC4后出错

.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没有足够

Razor2(与MVC4一起提供)似乎与Razor1(来自MVC3)不完全向后兼容

升级后,我发现一个错误:

"td@Html.Raw(计数)元素未关闭。所有元素必须是自动关闭的或具有匹配的结束标记

导致这种情况的代码是:

<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 }