【发布时间】:2015-11-27 08:15:27
【问题描述】:
当我使用 Visual Studio 创建 ASP.NET 页面时,查看页面源代码时会忽略 ASPX 文件中的某些换行符。比如下面的ASPX代码
<head runat="server">
<title>My Page Title</title>
<meta id="MetaTag1" content="First item of information">
<meta id="MetaTag2" content="Second item of information">
<meta id="MetaTag3" content="Third item of information, containing longer description">
<meta id="MetaTag4">
<meta id="MetaTag5" content="Fifth item of information">
<meta id="MetaTag6">
<script type="text/javascript">
function button_pressed() {
document.getElementById('SubmitButton').style.borderWidth = '8px 5px 4px 7px';
[etc...]
当我查看页面源时显示如下:
<head><title>
My Page Title
</title><meta id="MetaTag1" content="First item of information"><meta id="MetaTag2" content
="Second item of information"><meta id="MetaTag3" content="Third item of information, conta
ining longer description"><meta id="MetaTag4"><meta id="MetaTag5" content="Fifth item of in
formation"><meta id="MetaTag6">
<script type="text/javascript">
function button_pressed() {
document.getElementById('SubmitButton').style.borderWidth = '8px 5px 4px 7px';
[etc...]
ASPX 文件中的大部分换行符和空格也在页面源代码中,但在某些情况下,换行符会被忽略(即使是</title> 和第一个<meta> 标记之间的双换行符)。在其他情况下,页面源中会出现 ASPX 文件中不存在的空白(或至少一种情况 - <title> 标记)。
这似乎是 ASP.NET 如何解释 ASPX 文件的问题,而不是浏览器或 Visual Studio,因为页面源在 FireFox、IE 和 Chrome 中看起来相同,并且在文本编辑器而不是 VS 并没有什么不同。
我想知道为什么当 ASPX 文件中的大部分空白确实进入 HTML 源时,它会被忽略(我只展示了一个有代表性的示例,重点关注有问题的部分,但其余的大部分页面源的格式主要对应于 ASPX)。
但更重要的是,我想知道如何在 ASPX 文件中添加换行符,这将使页面源代码更具可读性,但不会在网页上呈现。
一些不太理想的解决方案:
- 显然,每行末尾的
<br />不是我想要的。虽然这确实在页面源代码中添加了换行符,但它会在页面上呈现,在顶部添加无用的空格。 - 我可以在每行末尾添加
&#10;。这样更好,因为它不会在呈现的页面中添加空格,但它会显式显示在页面源中,使其看起来很混乱。 - 我可以将所有信息放在一个
<meta>标签中,并在content属性的各个项目之间添加&#10s。如果我这样做,则信息会垂直排列,并且不会显示&#10s。虽然这是最需要可读的部分,但这仅适用于属性值的内容。此外,对于某些<meta>s,内容是在 ASPX 中显式设置的,而对于其他人,它是由代码隐藏设置的,因此这样做会使事情复杂化。 - 我知道有一些依赖于浏览器的解决方案,但我不想依赖那些。我希望换行符实际上位于页面源代码中。
【问题讨论】:
-
好吧,我有另一个想法。如果我在行尾添加
<%:"\n"%>,则会在页面源代码中添加一个换行符,而不会显示任何额外的混乱(如&#10;的情况)。但是使用代码块只是在源代码中添加换行符是相当笨拙的。有谁知道纯 ASPX 解决方案?谁能解释为什么换行符只在几个部分被忽略?特别具有讽刺意味的是,忽略换行符的少数地方之一是标题中的 标记,因为 标记的主要目的是在页面源中查看! -
"given that the primary purpose of <meta> tags is to be viewed in the page source!"我认为主要目的是让搜索引擎阅读并提示浏览器如何呈现内容。顺便说一句:我以前从未注意到这一点,现在它困扰着我!我也喜欢排列整齐的东西。
标签: html asp.net visual-studio