我似乎有一个模糊的问题,剃刀模板迫使浏览器进入怪癖模式。它是umbraco 5中的一个简单的剃刀模板。以下代码使chrome,firefox,IE都进入怪癖模式:
@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>
如果我完全移动剃刀语法或将其向下移动,那么它不会在doctype之前进入标准合规模式。我尝试添加各种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 :(得分:1)
您的@using
语句中不需要使用分号,这可能是浏览器看到的内容吗?
所以,例如。
@using Umbraco.Cms.Web;
可以
@using Umbraco.Cms.Web
答案 1 :(得分:1)
同样在这里 看起来它在打开标签之前放置了额外的字符(空白)&lt; doctype。我认为这是一个编辑器错误。
尝试删除开头“&lt;”并将其插回并保存。 doctype也应该是文件的第一行。
答案 2 :(得分:0)
@语句被翻译为空格。 doctype预计将成为该文档的第一行。在这种情况下,第一行是空白,因此doctype被定义为空行triggers quirksmode。