去除aspx生成的页面最开始的空行
使用.aspx生成的页面一般都会有一个或多个空行,当然这些空行不会影响页面在浏览器中的渲染结果,不过在查看源代码的时候感觉有些别扭,我曾试着去删除这些空行,但没有成功,你知道你们有没有去尝试。
1 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="XXX.Default" %> 2 3 <!DOCTYPE html> 4 <html> 5 <head runat="server"> 6 <title></title> 7 </head> 8 <body> 9 <div> 10 <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> 11 </div> 12 </body> 13 </html> 14
生成后的页面:
1 2 3 <!DOCTYPE html> 4 <html> 5 <head><title> 6 7 </title></head> 8 <body> 9 <div> 10 <span id="Label1">170</span> 11 </div> 12 </body> 13 </html> 14
不过在看到使用.cshtml生成的页面之后我想到应该有解决方案了。通过比较cshtml和.aspx页面,我发现.aspx页面多了下面关键的一行:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="XXX.Default" %>
可以把它删除吗?当然不行,好多东西都在这里赋值的。那么是否可以移动它,让<!DOCTYPE html>在第一行呢?好吧,把它移动到<!DOCTYPE html>之后,再删除空行
1 <!DOCTYPE html> 2 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="XXX.Default" %> 3 <html> 4 <head runat="server"> 5 <title></title> 6 </head> 7 <body> 8 <div> 9 <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> 10 </div> 11 </body> 12 </html>
生成的页面如下
1 <!DOCTYPE html> 2 3 <html> 4 <head><title> 5 6 </title></head> 7 <body> 8 <div> 9 <span id="Label1">170</span> 10 </div> 11 </body> 12 </html>
<!DOCTYPE html>之前的空行删除了,但<!DOCTYPE html>的<html>之间多了空行了。其实我们可以把<%@ Page %>移动到<head runat="server">里,因为.aspx编译器会把里面的所有元素编译成HtmlControl,生成html时自然不会有多余的空行。
1 <!DOCTYPE html> 2 <html> 3 <head><title> 4 5 </title></head> 6 <body> 7 <div> 8 <span id="Label1">170</span> 9 </div> 10 </body> 11 </html>
不过如果不将<%@ Page %>放到第一行的话在WebSite中可以编译通过但编辑时会在错误列表中产生大量的莫明其妙的错误提示。当然你也可以将一些用户控件的引用声明放到<head runat="server">后也不会产生空行,但要在使用的地方之前(当然很少有人会在<head>中使用用户自定义控件)
1 <!DOCTYPE html> 2 <html> 3 <head runat="server"> 4 <title></title> 5 6 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="XXX.Default" %> 7 8 <%@ Register Src="~/WebUserControl1.ascx" TagPrefix="uc1" TagName="WebUserControl1" %> 9 </head> 10 <body> 11 <div> 12 <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> 13 </div> 14 <uc1:WebUserControl1 runat="server" ID="WebUserControl1" /> 15 </body> 16 </html>
1 <!DOCTYPE html> 2 <html> 3 <head><title> 4 5 </title></head> 6 <body> 7 <div> 8 <span id="Label1">2464</span> 9 </div> 10 WebUserControl1.ascx 11 </body> 12 </html>