如果用 .NET 创建一个空的页面,.aspx 文件内容如下。
代码段一
<%&#64; Page Language&#61;"C#" AutoEventWireup&#61;"true" CodeFile&#61;"Default.aspx.cs" Inherits&#61;"_Default" %>
DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns&#61;"http://www.w3.org/1999/xhtml"> <head runat&#61;"server"> <title>Untitled Pagetitle> head> <body> <form id&#61;"form1" runat&#61;"server"> <div> div> form> body> html>
以上页面没有任何控件。然后用 IE 查看它的源文件。如下所示。
代码段二
DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns&#61;"http://www.w3.org/1999/xhtml"> <head> <title>Untitled Pagetitle> head> <body> <form name&#61;"form1" method&#61;"post" action&#61;"Default.aspx" id&#61;"form1"> <div> <input type&#61;"hidden" name&#61;"__VIEWSTATE" id&#61;"__VIEWSTATE" value&#61;"/wEPDwUJNzgzNDMwNTMzZGT8XigVHlmkk&#43;BXiblfwYUp8bVAIA&#61;&#61;" /> div> <div> div> form> body> html>
即便没有任何控件&#xff0c;但在它的源代码文件中还是有个隐藏域。如果向这个页面添加一个 HTML 文本框&#xff0c;.aspx 文件内容如下所示。
代码段三
<%&#64; Page Language&#61;"C#" AutoEventWireup&#61;"true" CodeFile&#61;"Default.aspx.cs" Inherits&#61;"_Default" %>
DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns&#61;"http://www.w3.org/1999/xhtml"> <head runat&#61;"server"> <title>Untitled Pagetitle> head> <body> <form id&#61;"form1" runat&#61;"server"> <div> <input id&#61;"Text1" type&#61;"text" />div> form> body> html>
再查看它的源文件&#xff0c;如下所示。
代码段四
DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns&#61;"http://www.w3.org/1999/xhtml"> <head> <title>Untitled Pagetitle> head> <body> <form name&#61;"form1" method&#61;"post" action&#61;"Default.aspx" id&#61;"form1"> <div> <input type&#61;"hidden" name&#61;"__VIEWSTATE" id&#61;"__VIEWSTATE" value&#61;"/wEPDwUJNzgzNDMwNTMzZGT8XigVHlmkk&#43;BXiblfwYUp8bVAIA&#61;&#61;" /> div> <div> <input id&#61;"Text1" type&#61;"text" /> div> form> body> html>
此时&#xff0c;除了隐藏域&#xff0c;就是真正的 HTML 文本框。如果向这个页面添加一个 ASP.NET 控件&#xff0c;.aspx 文件内容如下所示。
代码段五
<%&#64; Page Language&#61;"C#" AutoEventWireup&#61;"true" CodeFile&#61;"Default.aspx.cs" Inherits&#61;"_Default" %>
DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns&#61;"http://www.w3.org/1999/xhtml"> <head runat&#61;"server"> <title>Untitled Pagetitle> head> <body> <form id&#61;"form1" runat&#61;"server"> <div> <asp:TextBox ID&#61;"TextBox1" runat&#61;"server">asp:TextBox>div> form> body> html>
查看它的源文件&#xff0c;如下所示。
代码段六
DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns&#61;"http://www.w3.org/1999/xhtml"> <head> <title>Untitled Pagetitle> head> <body> <form name&#61;"form1" method&#61;"post" action&#61;"Default.aspx" id&#61;"form1"> <div> <input type&#61;"hidden" name&#61;"__VIEWSTATE" id&#61;"__VIEWSTATE" value&#61;"/wEPDwUJMjgzMDgzOTgzZGRQ4cwjxigvH0cn0g6XWSHkZbN2Lg&#61;&#61;" /> div> <div> <input name&#61;"TextBox1" type&#61;"text" id&#61;"TextBox1" />div> <div> <input type&#61;"hidden" name&#61;"__EVENTVALIDATION" id&#61;"__EVENTVALIDATION" value&#61;"/wEWAgKo3JKxDwLs0bLrBrEWYCZVJeodiUUqcdX2kqmQDHGa" />div> form> body> html>
此时的源文件&#xff0c;多了一个。两个隐藏域&#xff0c;分别是 "__VIEWSTATE" 和 "__EVENTVALIDATION"&#xff0c;再就是 HTML 文本框。
另外&#xff0c;我们知道 ASP.NET 程序中&#xff0c;有几个一直存在的对象&#xff0c;Server 对象&#xff0c;Response 对象&#xff0c;Request 对象等等。如果我们调试一下 ASP.NET 程序&#xff0c;看看 Response 和 Request 对象都有些什么。
对于 Request 对象&#xff0c;你可能看到如下一堆信息。
代码段七
AcceptTypes: {Dimensions:[1]}
AnonymousID: null
ApplicationPath: "/"
AppRelativeCurrentExecutionFilePath: "~/Default.aspx"
Browser: {System.Web.Mobile.MobileCapabilities}
ClientCertificate: {System.Web.HttpClientCertificate}
ContentEncoding: {System.Text.UTF8Encoding}
ContentLength: 0
ContentType: ""
COOKIEs: {System.Web.HttpCOOKIECollection}
CurrentExecutionFilePath: "/Default.aspx"
FilePath: "/Default.aspx"
Files: {System.Web.HttpFileCollection}
Filter: {System.Web.HttpInputStreamFilterSource}
Form: {}
Headers: {Connection&#61;Keep-Alive&;;Accept&#61;*%2f*&Accept-Encoding&#61;gzip%2c&#43;deflate&Accept-Language&#61;zh-cn&Host&#61;localhost%3a1234&User-Agent&#61;Mozilla%2f4.0&#43;(compatible%3b&#43;MSIE&#43;7.0%3b&#43;Windows&#43;NT&#43;5.2%3b&#43;.NET&#43;CLR&#43;1.1.4322%3b&#43;.NET&#43;CLR&#43;2.0.50727)&UA-CPU&#61;x86}
HttpMethod: "GET"
InputStream: {System.Web.HttpInputStream}
IsAuthenticated: false
IsLocal: true
IsSecureConnection: false
LogonUserIdentity: {System.Security.Principal.WindowsIdentity}
Params: {ALL_HTTP&#61;HTTP_CONNECTION%3aKeep-Alive%0d%0aHTTP_ACCEPT%3a*%2f*%0d%0aHTTP_ACCEPT_ENCODING%3agzip%2c&#43;deflate%0d%0aHTTP_ACCEPT_LANGUAGE%3azh-cn%0d%0aHTTP_HOST%3alocalhost%3a1234%0d%0aHTTP_USER_AGENT%3aMozilla%2f4.0&#43;(compatible%3b&#43;MSIE&#43;7.0%3b&#43;Windows&#43;NT&#43;5.2%3b&#43;.NET&#43;CLR&#43;1.1.4322%3b&#43;.NET&#43;CLR&#43;2.0.50727)%0d%0aHTTP_UA_CPU%3ax86%0d%0a&;;ALL_RAW&#61;Connection%3a&#43;Keep-Alive%0d%0aAccept%3a&#43;*%2f*%0d%0aAccept-Encoding%3a&#43;gzip%2c&#43;deflate%0d%0aAccept-Language%3a&#43;zh-cn%0d%0aHost%3a&#43;localhost%3a1234%0d%0aUser-Agent%3a&#43;Mozilla%2f4.0&#43;(compatible%3b&#43;MSIE&#43;7.0%3b&#43;Windows&#43;NT&#43;5.2%3b&#43;.NET&#43;CLR&#43;1.1.4322%3b&#43;.NET&#43;CLR&#43;2.0.50727)%0d%0aUA-CPU%3a&#43;x86%0d%0a&APPL_MD_PATH&#61;%2fLM%2fW3SVC%2f1860662192%2fRoot&APPL_PHYSICAL_PATH&#61;D%3a%5cMyTest%5cWebSite1%5c&AUTH_TYPE&#61;&AUTH_USER&#61;&AUTH_PASSWORD&#61;&LOGON_USER&#61;&REMOTE_USER&#61;&CERT_COOKIE&#61;&CERT_FLAGS&#61;&CERT_ISSUER&#61;&CERT_KEYSIZE&#61;&CERT_SECRETKEYSIZE&#61;&CERT_SERIALNUMBER&#61;&CERT_SERVER_ISSUER&#61;&CERT_SERVER_SUBJECT&#61;&CERT_SUBJECT&#61;&CONTENT_LENGTH&#61;0&CONTENT_TYPE&#61;&GATEWAY_INTERFACE&#61;CGI%2f1.1&HTTPS&#61;off&HTTPS_KEYSIZE&#61;&H
_SECRETKEYSIZE&#61;&;;HTTPS_SERVER_ISSUER&#61;&HTTPS_SERVER_SUBJECT&#61;&INSTANCE_ID&#61;1860662192&INSTANCE_META_PATH&#61;%2fLM%2fW3SVC%2f1860662192&LOCAL_ADDR&#61;127.0.0.1&PATH_INFO&#61;%2fDefault.aspx&PATH_TRANSLATED&#61;D%3a%5cMyTest%5cWebSite1%5cDefault.aspx&QUERY_STRING&#61;&REMOTE_ADDR&#61;127.0.0.1&REMOTE_HOST&#61;127.0.0.1&REMOTE_PORT&#61;46201&REQUEST_METHOD&#61;GET&SCRIPT_NAME&#61;%2fDefault.aspx&SERVER_NAME&#61;localhost&SERVER_PORT&#61;1234&SERVER_PORT_SECURE&#61;0&SERVER_PROTOCOL&#61;HTTP%2f1.1&SERVER_SOFTWARE&#61;Microsoft-IIS%2f6.0&URL&#61;%2fDefault.aspx&HTTP_CONNECTION&#61;Keep-Alive&HTTP_ACCEPT&#61;*%2f*&HTTP_ACCEPT_ENCODING&#61;gzip%2c&#43;deflate&HTTP_ACCEPT_LANGUAGE&#61;zh-cn&HTTP_HOST&#61;localhost%3a1234&HTTP_USER_AGENT&#61;Mozilla%2f4.0&#43;(compatible%3b&#43;MSIE&#43;7.0%3b&#43;Windows&#43;NT&#43;5.2%3b&#43;.NET&#43;CLR&#43;1.1.4322%3b&#43;.NET&#43;CLR&#43;2.0.50727)&HTTP_UA_CPU&#61;x86}
Path: "/Default.aspx"
PathInfo: ""
PhysicalApplicationPath: "D://MyTest//WebSite1//"
PhysicalPath: "D://MyTest//WebSite1//Default.aspx"
QueryString: {}
RawUrl: "/Default.aspx"
RequestType: "GET"
ServerVariables: {ALL_HTTP&#61;HTTP_CONNECTION%3aKeep-Alive%0d%0aHTTP_ACCEPT%3a*%2f*%0d%0aHTTP_ACCEPT_ENCODING%3agzip%2c&#43;deflate%0d%0aHTTP_ACCEPT_LANGUAGE%3azh-cn%0d%0aHTTP_HOST%3alocalhost%3a1234%0d%0aHTTP_USER_AGENT%3aMozilla%2f4.0&#43;(compatible%3b&#43;MSIE&#43;7.0%3b&#43;Windows&#43;NT&#43;5.2%3b&#43;.NET&#43;CLR&#43;1.1.4322%3b&#43;.NET&#43;CLR&#43;2.0.50727)%0d%0aHTTP_UA_CPU%3ax86%0d%0a&;;ALL_RAW&#61;Connection%3a&#43;Keep-Alive%0d%0aAccept%3a&#43;*%2f*%0d%0aAccept-Encoding%3a&#43;gzip%2c&#43;deflate%0d%0aAccept-Language%3a&#43;zh-cn%0d%0aHost%3a&#43;localhost%3a1234%0d%0aUser-Agent%3a&#43;Mozilla%2f4.0&#43;(compatible%3b&#43;MSIE&#43;7.0%3b&#43;Windows&#43;NT&#43;5.2%3b&#43;.NET&#43;CLR&#43;1.1.4322%3b&#43;.NET&#43;CLR&#43;2.0.50727)%0d%0aUA-CPU%3a&#43;x86%0d%0a&APPL_MD_PATH&#61;%2fLM%2fW3SVC%2f1860662192%2fRoot&APPL_PHYSICAL_PATH&#61;D%3a%5cMyTest%5cWebSite1%5c&AUTH_TYPE&#61;&AUTH_USER&#61;&AUTH_PASSWORD&#61;&LOGON_USER&#61;&REMOTE_USER&#61;&CERT_COOKIE&#61;&CERT_FLAGS&#61;&CERT_ISSUER&#61;&CERT_KEYSIZE&#61;&CERT_SECRETKEYSIZE&#61;&CERT_SERIALNUMBER&#61;&CERT_SERVER_ISSUER&#61;&CERT_SERVER_SUBJECT&#61;&CERT_SUBJECT&#61;&CONTENT_LENGTH&#61;0&CONTENT_TYPE&#61;&GATEWAY_INTERFACE&#61;CGI%2f1.1&HTTPS&#61;off&HTTPS_K
ZE&#61;&;;HTTPS_SECRETKEYSIZE&#61;&HTTPS_SERVER_ISSUER&#61;&HTTPS_SERVER_SUBJECT&#61;&INSTANCE_ID&#61;1860662192&INSTANCE_META_PATH&#61;%2fLM%2fW3SVC%2f1860662192&LOCAL_ADDR&#61;127.0.0.1&PATH_INFO&#61;%2fDefault.aspx&PATH_TRANSLATED&#61;D%3a%5cMyTest%5cWebSite1%5cDefault.aspx&QUERY_STRING&#61;&REMOTE_ADDR&#61;127.0.0.1&REMOTE_HOST&#61;127.0.0.1&REMOTE_PORT&#61;46201&REQUEST_METHOD&#61;GET&SCRIPT_NAME&#61;%2fDefault.aspx&SERVER_NAME&#61;localhost&SERVER_PORT&#61;1234&SERVER_PORT_SECURE&#61;0&SERVER_PROTOCOL&#61;HTTP%2f1.1&SERVER_SOFTWARE&#61;Microsoft-IIS%2f6.0&URL&#61;%2fDefault.aspx&HTTP_CONNECTION&#61;Keep-Alive&HTTP_ACCEPT&#61;*%2f*&HTTP_ACCEPT_ENCODING&#61;gzip%2c&#43;deflate&HTTP_ACCEPT_LANGUAGE&#61;zh-cn&HTTP_HOST&#61;localhost%3a1234&HTTP_USER_AGENT&#61;Mozilla%2f4.0&#43;(compatible%3b&#43;MSIE&#43;7.0%3b&#43;Windows&#43;NT&#43;5.2%3b&#43;.NET&#43;CLR&#43;1.1.4322%3b&#43;.NET&#43;CLR&#43;2.0.50727)&HTTP_UA_CPU&#61;x86}
TotalBytes: 0
Url: {http://localhost:1234/Default.aspx}
UrlReferrer: null
UserAgent: "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727)"
UserHostAddress: "127.0.0.1"
UserHostName: "127.0.0.1"
UserLanguages: {Dimensions:[1]}
对于 Response 对象&#xff0c;你可能会看到如下内容。
代码段八
Buffer: true
BufferOutput: true
Cache: {System.Web.HttpCachePolicy}
CacheControl: "private"
Charset: "utf-8"
ContentEncoding: {System.Text.UTF8Encoding}
ContentType: "text/html"
COOKIEs: {System.Web.HttpCOOKIECollection}
Expires: 0
ExpiresAbsolute: {0001-1-1 0:00:00}
Filter: {System.Web.HttpResponseStreamFilterSink}
HeaderEncoding: {System.Text.UTF8Encoding}
IsClientConnected: true
IsRequestBeingRedirected: false
Output: {System.Web.HttpWriter}
OutputStream: {System.Web.HttpResponseStream}
RedirectLocation: null
Status: "200 OK"
StatusCode: 200
StatusDescription: "OK"
SuppressContent: false