2012-04-14 63 views
0

我似乎有一个模糊的问题,剃刀模板强制浏览器进入怪癖模式。它是一把umbraco 5.一个简单的剃​​刀模板下面的代码使得浏览器,Firefox,IE都进入特殊模式:MVC Razor怪癖模式 - umbraco

@inherits RenderViewPage 
@using System.Web.Mvc.Html; 
@using Umbraco.Cms.Web; 
@{ 
    Layout = ""; 
} 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 
<html> 
<head> 
    <meta charset="utf-8" /> 
    <title>Page title</title> 
</head> 
<body> 



</body> 
</html> 

如果我完全移动剃刀语法或下移,所以它不是文档类型前它进入标准合规模式。我已经尝试添加各种X-UA兼容元标记,无效。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 
<html> 
<head> 
    <meta charset="utf-8" /> 
    <title>Page title</title> 
</head> 
<body> 

@inherits RenderViewPage 
@using System.Web.Mvc.Html; 
@using Umbraco.Cms.Web; 
@{ 
    Layout = ""; 
} 

</body> 
</html> 

任何任何想法可能是什么原因?就好像浏览器认为它在doctype之前呈现的东西,但没有我能看到的东西。

感谢

+0

此问题似乎是由模板顶部的@inherits RenderViewPage引起的。我无法找到任何信息或解决方法 - 解决方案是使用Umbraco 4.7! – user1300464 2012-04-14 08:25:40

回答

1

你并不需要在你的@using语句的分号,也许这是什么浏览器看到的?

所以例如

@using Umbraco.Cms.Web; 

可以只是

@using Umbraco.Cms.Web 
+0

感谢您的建议,我不知道,分号由umbraco模板提供。不幸的是,删除它们并没有区别。 但是我刚刚发现,通过删除第一行:@inherits RenderViewPage它将在标准兼容模式下呈现。 – user1300464 2012-04-14 07:42:25

1

同样在这里 它看起来像它放置额外的字符(空格)打开文档类型的标签<之前。我认为这是一个编辑器错误。

尝试删除开头“<”,然后将其插回并保存。也doctype应该是文件的第一行。

0

@语句被翻译为空白。文档类型有望成为文档的第一行。在这种情况下,第一行是空白的,所以doctype被定义为空行,其中triggers quirksmode