ASP.NET Tutorial/Page Lifecycle/Request
Содержание
- 1 Displaying additional path information in ASP.NET
- 2 Displaying the Request.FilePath property in ASP.NET
- 3 Filtering the HTTP Request body using InputStream
- 4 Get browser information
- 5 Get Request.UserLanguages
- 6 Getting cookie values
- 7 Request.Cookies
- 8 Request.Headers
- 9 Request.QueryString
- 10 Search
Displaying additional path information in ASP.NET
<source lang="csharp">
<%@ Page Language="vb" %> <html>
<head> <title>Displaying additional path information in ASP.NET</title> </head>
<body>
<%
Response.Write("File Path = " & Request.FilePath & "
") Response.Write("Path = " & Request.Path & "
") Response.Write("Additional Path Info = " & Request.PathInfo & "
") Response.Write("Physical Application Path = " & Request.PhysicalApplicationPath & "
") Response.Write("Physical Path = " & Request.PhysicalPath)
%>
</body> </html></source>
Displaying the Request.FilePath property in ASP.NET
<source lang="csharp">
<%@ Page Language="vb" %> <html>
<head> <title>Displaying the Request.FilePath property in ASP.NET</title> </head>
<body>
<%
Dim fp As String fp = Request.FilePath Response.Write("The virtual path of the current request is: " & fp & "")
%>
</body> </html></source>
Filtering the HTTP Request body using InputStream
<source lang="csharp">
<html>
<head> <title>Submit a named parameter via POST</title> </head>
<body>
<form id="form1" action="NextPage.aspx" method="POST">
Name:
<input type="text" name="name"> <input type="submit"> </form>
</body> </html> File: NextPage.aspx <%@ Page Language="vb" %> <%@ import namespace = "System.IO" %> <html>
<head> <title>Filtering the HTTP Request body using InputStream</title> </head>
<body>
<%
Dim intvar As Integer
intvar = Request.TotalBytes
Response.Write("The size of the current request body is:
")
Response.Write(intvar & " bytes.
")
Dim InStream As Stream
Dim iCounter, StreamLength, iRead As Integer
Dim OutString As String
Dim Found As Boolean
InStream = Request.InputStream
StreamLength = CInt(InStream.Length)
Dim ByteArray(StreamLength) As Byte
Trace.Write("StreamLength", StreamLength)
iRead = InStream.Read(ByteArray, 0, StreamLength)
For iCounter = 0 to StreamLength - 1
If Found = True Then OutString = OutString & Chr(ByteArray(iCounter)) End If If Chr(ByteArray(iCounter)) = "A" Then Trace.Write("Found", "Found an "A"") Found = True OutString = OutString & Chr(ByteArray(iCounter)) End If Trace.Write("Loop Number", iCounter) Trace.Write("CurrentChar", Chr(ByteArray(iCounter)))
Next iCounter Response.Write("Output: " & OutString) %>
</body> </html></source>
Get browser information
<source lang="csharp">
<%@ Page EnableViewstate="False" %> <script language="VB" runat="server"> Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
Dim s As String s &= "ActiveXControls=" & Request.Browser.ActiveXControls & "
" s &= "AOL=" & Request.Browser.AOL & "
" s &= "BackgroundSounds=" & Request.Browser.BackgroundSounds & "
" s &= "Beta=" & Request.Browser.Beta & "
" s &= "Browser=" & Request.Browser.Browser & "
" s &= "CDF=" & Request.Browser.CDF & "
" s &= "ClrVersion=" & Request.Browser.ClrVersion.ToString & "
" s &= "Cookies=" & Request.Browser.Cookies & "
" s &= "Crawler=" & Request.Browser.Crawler & "
" s &= "EcmaScriptVersion=" & Request.Browser.EcmaScriptVersion.ToString & "
" s &= "Frames=" & Request.Browser.Frames & "
" s &= "JavaApplets=" & Request.Browser.JavaApplets & "
" s &= "JavaScript=" & Request.Browser.JavaScript & "
" s &= "MajorVersion=" & Request.Browser.MajorVersion & "
" s &= "MinorVersion=" & Request.Browser.MinorVersion & "
" s &= "MSDomVersion=" & Request.Browser.MSDomVersion.ToString & "
" s &= "Platform=" & Request.Browser.Platform & "
" s &= "Tables=" & Request.Browser.Tables & "
" s &= "Type=" & Request.Browser.Type & "
" s &= "VBScript=" & Request.Browser.VBScript & "
" s &= "Version=" & Request.Browser.Version & "
" s &= "W3CDomVersion=" & Request.Browser.W3CDomVersion.ToString & "
" s &= "Win16=" & Request.Browser.Win16 & "
" s &= "Win32=" & Request.Browser.Win32 & "
" Label.Text = s
End Sub </script> <html>
<body> <form runat="server"> Browser Capabilties:
<asp:Label Runat="server" ID="Label" /> </form> </body>
</html></source>
Get Request.UserLanguages
<source lang="csharp">
<%@ Page Language="VB" %> <%@ Import Namespace="System.Globalization" %> <script runat="server">
sub Page_Load(Sender as Object, e as EventArgs) dim strLanguage as string = Request.UserLanguages(0).ToString lblMessage.Text = "Primary language: " & strLanguage & "
" dim objCulture as new CultureInfo(strLanguage) lblMessage.Text += "Full name: " & objCulture.EnglishName & "
" lblMessage.Text += "Native name: " & objCulture.NativeName & "
" lblMessage.Text += "Abbreviation: " & objCulture.ThreeLetterISOLanguageName & "
" lblMessage.Text += "Current Time: " & DateTime.Now.ToString("D", objCulture) & "
" lblMessage.Text += "Parent: " & objCulture.Parent.EnglishName & "
" end sub
</script> <html><body>
Your user information: <asp:Label id="lblMessage" runat="server"/>
</body></html></source>
Getting cookie values
<source lang="csharp">
<%@ Page Language="vb" Explicit="False" Strict="False" %> <html>
<head> <title>Getting cookie values in ASP</title> </head>
<body>
<% For Each strKey In Request.Cookies
Response.Write (strKey & " = " & Request.Cookies(strKey).Value & "
") If Request.Cookies(strKey).HasKeys Then For Each strSubKey In Request.Cookies(strKey).Values Response.Write ("->" & strKey & "(" & strSubKey & ") = " & _ Request.Cookies(strKey)(strSubKey).ToString() & "
") Next End If
Next %>
</body> </html></source>
Request.Cookies
<source lang="csharp">
<script language="C#" runat="server" trace="true" > protected void Page_Load(object o, EventArgs e) { HttpCookie outbound = new HttpCookie("MyCookie"); HttpCookie inbound = Request.Cookies["MyCookie"]; if(inbound != null) {
outbound.Value = (Int32.Parse(inbound.Value) + 1).ToString(); theLabel.Text = inbound.Value;
} else {
outbound.Value = "1";
} Response.Cookies.Add(outbound); } </script> <asp:label runat="server" id="theLabel" Text="no cookie value received" /></source>
Request.Headers
<source lang="csharp">
<%@ Page Language="vb" %> <html>
<head> <title>Displaying the HTTP headers collection in ASP.NET</title> </head>
<body>
<%
Response.Write(Request.Headers) Request.SaveAs((Request.PhysicalApplicationPath & "HTTPRequest.txt"), True) Request.SaveAs((Request.PhysicalApplicationPath & "HTTPRequest_NoHeaders.txt"), False)
%>
</body> </html></source>
Request.QueryString
<source lang="csharp">
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="Search" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server">
<title>Search Page</title>
</head> <body>
<form id="form1" runat="server">
Search
You have successfully redirected to the search page. Your search string was <asp:Label ID="labSearch" runat="server" />
</form>
</body> </html> File: Default.aspx.cs using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; public partial class Search : System.Web.UI.Page {
protected void Page_Load(object sender, EventArgs e) { labSearch.Text = (string)Request.QueryString["search"]; }
}</source>
Request.ServerVariables
<source lang="csharp">
<%@ Page Language="vb" %> <html>
<head> <title>Request property example</title> <script runat="server"> Sub Page_Load() Message.Text = "The current request is from: " & _ CStr(Request.ServerVariables.Item("REMOTE_ADDRESS")) End Sub </script> </head>
<body>
<asp:label id="Message" runat="server"/>
</body> </html></source>
Request.UrlReferrer
<source lang="csharp">
<%@ Page Language="C#"
AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="CrossPage1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server">
<title>CrossPage1</title>
</head> <body>
<form id="form1" runat="server" >
Type something here: <asp:TextBox runat="server" ID="txt1"></asp:TextBox> <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="txt1" EnableClientScript="False" ErrorMessage="This is a required field."> </asp:RequiredFieldValidator>
<asp:Button runat="server" ID="cmdPost" PostBackUrl="NextPage.aspx" Text="Cross-Page Postback" /> <asp:Button runat="server" ID="cmdTransfer" Text="Manual Transfer" OnClick="cmdTransfer_Click" />
</form>
</body> </html> File: Default.aspx.cs using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; public partial class CrossPage1 : System.Web.UI.Page {
protected void Page_Load(object sender, EventArgs e) { if (Request.QueryString["err"] != null) Page.Validate(); } public TextBox TextBox1 { get { return txt1; } } protected void cmdTransfer_Click(object sender, EventArgs e) { Server.Transfer("NextPage.aspx", true); }
}
File: NextPage.aspx <%@ Page Language="C#"
AutoEventWireup="true" CodeFile="NextPage.aspx.cs" Inherits="CrossPage2" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server">
<title>Untitled Page</title>
</head> <body>
<form id="form1" runat="server" >
</form>
</body> </html>
File: NextPage.aspx.cs using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; public partial class CrossPage2 : System.Web.UI.Page {
protected void Page_Load(object sender, EventArgs e) { if (PreviousPage != null) { if (!PreviousPage.IsValid) { Response.Redirect(Request.UrlReferrer.AbsolutePath + "?err=true"); } else { Response.Write("You came from a page titled " + PreviousPage.Header.Title + "<br /"); CrossPage1 prevPage = PreviousPage as CrossPage1; if (prevPage != null) { Response.Write("You typed in this: " + prevPage.TextBox1.Text + "
"); } if (PreviousPage.IsCrossPagePostBack) { Response.Write("The page was posted directly"); } else { Response.Write("You used Server.Transfer()"); } } } }
}</source>
Showing Parameters via the Params Collection in ASP.NET
<source lang="csharp">
<html>
<head> <title>Submit a named parameter via POST</title> </head>
<body>
<form id="form1" action="NextPage.aspx" method="POST">
Name:
<input type="text" name="name"> <input type="submit"> </form>
</body> </html> File: NextPage.aspx <%@ Page Language="vb" %> <html>
<head> <title>Showing Parameters via the Params Collection in ASP.NET</title> </head>
<body>
<% Dim Counter1, Counter2 As Integer Dim Keys(), subKeys() As String Dim ParamColl As NameValueCollection
ParamColl=Request.Params Keys = ParamColl.AllKeys For Counter1 = 0 To Keys.GetUpperBound(0)
Response.Write("Key: " & Keys(Counter1) & "
") subKeys = ParamColl.GetValues(Counter1) " Get all values under this key. For Counter2 = 0 To subKeys.GetUpperBound(0) Response.Write("Value " & CStr(Counter2) & ": " & subKeys(Counter2) & "
") Next Counter2
Next Counter1 %>
</body> </html></source>
Showing QueryString values via the QueryString Collection in ASP.NET
<source lang="csharp">
<%@ Page Language="vb" %> <html>
<head> <title>Showing QueryString values via the QueryString Collection in ASP.NET</title> </head>
<body>
<% Dim Counter1, Counter2 As Integer Dim Keys(), subKeys() As String Dim queryStringCollection As NameValueCollection
queryStringCollection=Request.QueryString Keys = queryStringCollection.AllKeys For Counter1 = 0 To Keys.GetUpperBound(0)
Response.Write("Key: " & Keys(Counter1) & "
") subKeys = queryStringCollection.GetValues(Counter1) For Counter2 = 0 To subKeys.GetUpperBound(0) Response.Write("Value " & CStr(Counter2) & ": " & subKeys(Counter2) & "
") Next Counter2
Next Counter1 %> </body> </html></source>