使用.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>