MasterPage输出内的Meta标签在一行上

时间:2013-05-02 15:37:31

标签: html visual-studio-2010 html5 master-pages meta-tags

我喜欢干净的代码,我相信大多数开发人员都会这么做。我遇到的问题是,我的Meta标签全部出现在一条线上而不是分开的线上。

我有一个名为“client.master”的文件,这里是标题的代码:

<head runat="server">
   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
   <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
   <meta name="apple-mobile-web-app-capable" content="yes" />
   <meta name="apple-mobile-web-app-status-bar-style" content="default" />
   <meta name="format-detection" content="telephone=no" />

   <script src="/scripts/script1.min.js" type="text/javascript"></script>
   <script src="/scripts/script2.min.js" type="text/javascript"></script>

   <link rel="apple-touch-icon" href="/images/home-screen.png" />
   <link rel="apple-touch-startup-image" href="/images/home-startup.png" />
   <link href="/css/thirdparty/xxxxx.min.css" type="text/css" rel="stylesheet" />
   <link href="/css/design.css" type="text/css" rel="stylesheet" />

   <asp:ContentPlaceHolder ID="headContent" runat="server">
   </asp:ContentPlaceHolder>
</head>

看起来很干净漂亮。但是,当我查看页面的来源时,输出会在一行中显示<meta>标记和<link>标记。 脚本标记不是

以下是我的代码输出:

<!DOCTYPE html>
<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" /><meta name="apple-mobile-web-app-capable" content="yes" /><meta name="apple-mobile-web-app-status-bar-style" content="default" /><meta name="format-detection" content="telephone=no" />

   <script src="/scripts/script1.min.js" type="text/javascript"></script>
   <script src="/scripts/script2.min.js" type="text/javascript"></script>

   <link rel="apple-touch-icon" href="/images/home-screen.png" /><link rel="apple-touch-startup-image" href="/images/home-startup.png" /><link href="/css/thirdparty/xxxxx.min.css" type="text/css" rel="stylesheet" /><link href="/css/design.css" type="text/css" rel="stylesheet" />

   <title>
      Login
</title></head>

请注意,<meta><link>标记都在一行 AND <title>标记包含换行符。

以下是Title:

的default.aspx页面的HTML
<asp:Content ID="title" runat="server" ContentPlaceHolderID="title">
   Login
</asp:Content>

我的假设是因为<meta>代码和<link>代码是自封闭的,<script>代码以</script>结尾。

解决此问题的唯一方法是使用<meta>关闭我的</meta>代码。关闭元标记和链接标记时,哪种方式被视为标准?或脚本标签?

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

如果您真的想要遵循规范,linkmetavoid元素,那么 {1}}是HTML5,您可以使用自我标记DOCTYPE,但默认方式是仅将其用作开始标记,这是<meta ..../>元素 don的正确符合用法我需要一个结束标记(empty,正如我所说,不能拥有它。)

脚本不是void元素,而是void元素,因此您只能使用开始标记,自结终标记或开始和结束标记。

请注意,对于具有类型为空的内容模型的元素,实际上意味着可能为空,而不是它应该;这可能就是所谓的empty

至于为什么asp解析器对你的metas这样做,我想不出一个原因。我理解您对干净代码的偏好,但如果它有任何帮助,请尝试至少认为该错误会导致文件大小减少:o)

请记住,所有这些都适用于HTML5,XHTML以不同的方式处理void和空模型。