|
af Anders Bodeval Carlsen
ServerVariables får man fat i som i ASP, dog med en lille ændring i syntaksen. Hvor du er vant til at skrive f.eks. Request.ServerVariables("SERVER_NAME") skal du med ASP.net skrive: Request.ServerVariables["SERVER_NAME"];
Desuden har du direkte adgang til en række
variabler via HttpRequest objektet, som i det gamle asp kun kunne nås
via Request.ServerVariables
Her et eksempel hvor adressen på den side som linker til den aktuelle side udskrives. Reguest.UrlReferer returnerer ikke en streng med et objekt af typen Uri.
Uri MyUrl = Request.UrlReferrer; Response.Write(MyUrl.ToString());
Liste med ServerVariables:
ALL_HTTP ALL_RAW APPL_MD_PATH APPL_PHYSICAL_PATH AUTH_TYPE AUTH_USER AUTH_PASSWORD LOGON_USER REMOTE_USER CERT_COOKIE CERT_FLAGS CERT_ISSUER CERT_KEYSIZE CERT_SECRETKEYSIZE CERT_SERIALNUMBER CERT_SERVER_ISSUER CERT_SERVER_SUBJECT CERT_SUBJECT CONTENT_LENGTH CONTENT_TYPE GATEWAY_INTERFACE HTTPS HTTPS_KEYSIZE HTTPS_SECRETKEYSIZE HTTPS_SERVER_ISSUER |
HTTPS_SERVER_SUBJECT INSTANCE_ID INSTANCE_META_PATH LOCAL_ADDR PATH_INFO PATH_TRANSLATED QUERY_STRING REMOTE_ADDR REMOTE_HOST REQUEST_METHOD SCRIPT_NAME SERVER_NAME SERVER_PORT SERVER_PORT_SECURE SERVER_PROTOCOL SERVER_SOFTWARE URL HTTP_CONNECTION HTTP_ACCEPT HTTP_ACCEPT_ENCODING HTTP_ACCEPT_LANGUAGE HTTP_COOKIE HTTP_HOST HTTP_USER_AGENT
|
Af sikkerhedsgrunde har jeg ikke lavet en live-demo, der udskriver
værdierne af de forskellige variabler, men nederst på siden kan du
downloade koden.
<%@ Page Language="C#" Debug="true"%> <%@ Import Namespace="System.Data" %> <script runat="server"> void Page_Load(Object sender, EventArgs e) {// DataTablens Schema( det som den kommer til at indeholde) defineres DataTable list = new DataTable(); list.Columns.Add(new DataColumn("ServerVariables", typeof(string))); list.Columns.Add(new DataColumn("Value", typeof(string)));
NameValueCollection coll; int loop1, loop2; // Load ServerVariable collection into NameValueCollection object. coll=Request.ServerVariables;
// Get names of all keys into a string array. String[] arr1 = coll.AllKeys; for (loop1 = 0; loop1 < arr1.Length; loop1++) { String[] arr2=coll.GetValues(arr1[loop1]); DataRow dr = list.NewRow(); dr[0] = arr1[loop1];
for (loop2 = 0; loop2 < arr2.Length; loop2++) { dr[1] += arr2[loop2]; } list.Rows.Add(dr); }
DataView listView = new DataView(list); DataList1.DataSource = listView; DataList1.DataBind(); } </script>
Request.ServerVariables returnerer et objekt af typen NameValueCollection. NameValueCollection minder nærmest om Dictionary objektet fra asp. Med AllKeys konstrueres der et array som vi så kan loope igennem med en for - løkke:
Jeg vælger at bruge DataGrid til at præsenterer dataen med. Med AlternatingItemStyle får du på en let og elegant måde en læsevenlig tabel med skiftende farver for hver kolonne.
DataGrid
<asp:DataGrid id="DataList2" runat="server" CssClass="Normal" BorderColor="Tan" BorderWidth="1px" BackColor="LightGoldenrodYellow" CellPadding="2" GridLines="None" ForeColor="Black" Width="100%"> <SelectedItemStyle ForeColor="GhostWhite" BackColor="DarkSlateBlue" /> <AlternatingItemStyle BackColor="PaleGoldenrod" /> <ItemStyle Font-Names="Latha" CssClass="Normal" /> <HeaderStyle Font-Bold="True" CssClass="Normal" /> </asp:DataGrid>
Datagrid skal af performance hensyn anvendes med omtanke, da den
kræver store resurser af serveren, hvis man bruger den på store
datamængder. Med i dette eksempel syntes jeg at den kommer til sin ret.
Havde jeg skrevet koden i download-eksemplet i det gamle Asp, havde
koden til præsentationslaget fyldt mere en koden til dataen. Og bruger du Visual Studio.Net kan du meget hurtigt lave noget brugervenligt layout til din data-præsentation. |