Hľadajte slová pomocou ďalších operátorov. Vytvorenie a príprava databázy

Každý vývojár ASP.NET musí poznať direktívy stránky. Ak ste začiatočník a chcete sa dozvedieť o Smerniciach pre stránky, môžete si prečítať tento článok.

Takže prvá otázka sa týka smerníc stránok.

Čo je to Smernica o stránke?

Smernice stránky sú v podstate príkazy. Tieto príkazy používa kompilátor pri kompilácii stránky.

Ako používať direktívy na stránke ASP.NET

Nie je ťažké pridať smernicu na stránku ASP.NET. Je jednoduché pridať príkazy na stránku ASP.NET. Direktívy môžete písať v nasledujúcom formáte:

<%@%>

Pozrite si formát smernice, začína to "<%@" and ends with "%>". Najlepším spôsobom je umiestniť smernicu na začiatok stránky. Smernicu však môžete umiestniť kdekoľvek na stránku. Ešte jedna vec, do jednej smernice môžete umiestniť viac ako jeden atribút.

Tu je úplný zoznam smerníc:

  • @Stránka
  • @Majster
  • @Control
  • @Import
  • @Implements
  • @Registrovať
  • @Zhromaždenie
  • @MasterType
  • @Výstupná vyrovnávacia pamäť
  • @PreviousPageType
  • @Referencia

Poďme si o každej smernici niečo povedať.

Ak chcete zadať atribúty pre stránku ASP.NET, musíte použiť smernicu @Page. Ako viete, stránka ASP.NET je veľmi dôležitou súčasťou ASP.NET, takže táto direktíva sa bežne používa v ASP.NET.

<%@Page Language="C#" AutoEventWIreup="false" CodeFile="Default.aspx.cs" Inherits="_Default"%>

Teraz máte nejaké informácie o smerniciach @Page. Smernica @Master je celkom podobná smernici @Page. Jediný rozdiel je v tom, že smernica @master je určená pre hlavné stránky. Musíte si uvedomiť, že pri použití smernice @Master definujete vlastnosť stránky šablóny. Potom môže každá stránka s obsahom zdediť všetky vlastnosti definované na hlavnej stránke. Existujú však vlastnosti, ktoré sú dostupné iba na hlavnej stránke.

<%@Master Language="C#" AutoEventWIreup="false" CodeFile="MasterPage1.master.cs" Inherits="MasterPage"%>

@Control

@Control vytvára používateľské ovládacie prvky ASP.NET. Keď použijete direktívu, definujete vlastnosti, ktoré majú zdediť používateľské ovládacie prvky a tieto hodnoty sú priradené k používateľským ovládacím prvkom

<%@Control Language="C#" Explicit="True" CodeFile="WebUserControl.ascx.cs" Inherits="WebUserControl" %>

Ako viete, pred použitím triedy C# alebo VB musíte vo svojej triede .cs definovať menné priestory. Smernica @Import teda importuje menné priestory. Táto direktíva podporuje iba jeden atribút "namespace" a tento atribút má hodnotu reťazca, ktorá špecifikuje menný priestor, ktorý sa má importovať. Jedna vec, ktorú si musíte všimnúť, je, že smernica @Import nemôže obsahovať viac ako jeden pár atribút/hodnota. Môžete však použiť viacero riadkov.

<%@Import Namespace="System.Data"%>

@Implements

Smernica @Implements umožňuje stránkam ASP.NET implementovať rozhrania .Net. Táto smernica podporuje iba rozhranie s jedným atribútom.

<%@Implements Interface="System.Web.UI.IValidator"%>

@Registrovať

Keď vytvoríte používateľský ovládací prvok a pretiahnete tento používateľský ovládací prvok na vašu stránku, uvidíte direktívu @Register. Táto direktíva zaregistruje váš používateľský ovládací prvok na stránke, takže stránka bude mať prístup k ovládaciemu prvku.

<%@ Register TagPrefix="MayTag Namespace="MyName.MyNameSpace" Assembly="MyAssembly"%>

@Zhromaždenie

Smernica @Assembly pripája zostavy k stránke alebo používateľskému ovládaciemu prvku ASP.NET, čím sú triede dostupné všetky triedy zostavy a rozhrania. Táto smernica podporuje dva atribúty Name a src. Atribút Name definuje názov zostavy a atribút src definuje zdroj zostavy.

<%@Assembly Name="MyAssembly"%>
<%@Assembly src="MYAssembly.cs">

@MasterType

Direktíva @MasterType spája názov triedy so stránkou ASP.NET na získanie silne typizovaných referencií alebo členov obsiahnutých v špecifikovanej hlavnej stránke. Táto direktíva podporuje dva atribúty Typename a virtualpath. Typename nastavuje názov odvodenej triedy, z ktorej sa získajú silne typované alebo referenčné členy a virtuálna cesta nastavuje umiestnenie stránky, z ktorej sa tieto získavajú.

<%@MasterType VirtualPath="/MasterPage1.master"%>

@output cache

Riadi politiky ukladania výstupov do vyrovnávacej pamäte stránky ASP.NET.

<%@ OutputCache Duration ="180" VaryByParam="None"%>
@Previouspagetype

Táto smernica špecifikuje stránku, z ktorej pochádza akýkoľvek príspevok naprieč stránkami.

@Referencia

Táto smernica deklaruje, že spolu s aktívnou stránkou alebo ovládacím prvkom musí byť splnená aj iná stránka alebo používateľský ovládací výkrik. Táto direktíva podporuje virtuálnu cestu s jedným atribútom. Nastavuje umiestnenie stránky alebo používateľského ovládacieho prvku, z ktorého sa bude odkazovať na aktívnu stránku.

<%@Reference VirtualPayh="~/MyControl.ascx"%>

Záverečné slová

Dúfam, že si odtiaľto odnesiete nejaké poznatky. Napíšte komentár, ako sa vám páči tento článok. Vaše komentáre sú pre mňa veľmi cenné, pretože len vy mi poviete, kde robím chybu a aké zlepšenia musím urobiť, aby som napísal lepší článok. Komentujte a poskytnite spätnú väzbu.

Čo je kniha návštev?

Samozrejme, tu hovoríme o najtypickejšej knihe návštev. V prvom rade ide o systém, ktorý používateľovi poskytuje možnosť zadávať text, vybrať hodnotenie konkrétnej stránky a tiež špecifikovať svoje vlastné údaje (meno, e-mail, http atď.). Je to tiež systém na prezentáciu údajov zadaných rôznymi používateľmi, s možnosťou navigácie, posielania emailov autorom správ. Variácie sú tiež možné s rôznymi nastaveniami a s ovládaním normatívnej slovnej zásoby.

Čo potrebujeme

Samozrejme sa predpokladá, že čitateľ je oboznámený so základmi programovania ASP a SQL (na to úplne postačí oboznámenie sa s prvými časťami tohto článku). Okrem toho potrebujeme Microsoft SQL Server 7.0 alebo 2000, nejaký HTML alebo textový editor (odporúčam použiť Macromedia Dreamweaver UltraDev 4.0) a trochu trpezlivosti.

Vytvorenie a príprava databázy

Na usporiadanie ukladania údajov zadávaných používateľmi potrebujete jednu tabuľku, v ktorej môžete vytvárať polia na ukladanie mena používateľa, jeho e-mailovej adresy, krajiny bydliska, adresy webu, IP adresy, hodnoty hodnotenia používateľa webu na päťbodovej stupnici, atď.:

Pre jednoduchú integráciu systému do existujúcich lokalít sa odporúča naplánovať si ďalšiu tabuľku na ukladanie farieb a iných nastavení. To vám umožní v budúcnosti zmeniť zadané nastavenia bez zmeny zodpovedajúcich parametrov v zdrojových textoch modulov aplikácie Kniha návštev.

  • Spustite konfigurátor dátových zdrojov ODBC - Štart->Nastavenia->Ovládací panel->Nástroje na správu->Zdroje údajov ODBC.
  • Prejdite na kartu Systémové DSN a vytvorte nový zdroj údajov kliknutím na Pridať…
  • V zobrazenom zozname ovládačov vyberte databázový ovládač - Microsoft SQL Server a kliknite na Ďalej.
  • V riadku Názov zdroja údajov zadajte názov vašej databázy (v popísanom príklade je Gustbook názov, ktorým sa na ňu budete v budúcnosti odvolávať).
  • V riadku Server zadajte server, ku ktorému sa pripojíte, a kliknite na tlačidlo Ďalej.
  • Zvoľte režim autentifikácie Pri SQL Server... nastavte užívateľské meno a heslo pre pripojenie k SQL serveru; definujte komunikačný protokol servera (Konfigurácia klienta - tlačidlo TCP/IP) a dvakrát kliknite na Ďalej a potom kliknite na Dokončiť.
  • Zobrazia sa vám štatistiky o vykonaných akciách a na kontrolu zdroja údajov môžete použiť tlačidlo Testovať zdroj údajov.
  • Výsledkom je, že v zozname zdrojov údajov vo vašom systéme uvidíte riadok.

Teraz, keď je databáza pripravená, môžete pristúpiť priamo k vytvoreniu knihy návštev.

Integrácia systému do hotovej webovej stránky

Je jasné, že samotná kniha návštev nemá zmysel. Posúďte sami: kto potrebuje stránku určenú výhradne na zbieranie názorov čitateľov. Koniec koncov, aby ste zhromaždili názory na niečo, musíte najprv toto niečo predložiť na ich posúdenie. Preto je potrebné venovať osobitnú pozornosť otázkam súvisiacim so zjednodušením zabudovania systému do hotových stránok.

Najmä na uľahčenie prispôsobenia systému pre charakteristické vlastnosti konkrétnej stránky sa odporúča (ako je uvedené vyššie) vytvoriť špeciálnu tabuľku na uloženie všetkých týchto preferencií, aby ste mohli zadať určité hodnoty špecifické pre vašu stránku. do toho. Zjavnou výhodou tohto prístupu je, že na vloženie systému do už hotovej lokality nie je potrebné vykonávať zmeny v zdrojovom kóde modulov, stačí zmeniť nastavenia v príslušnej databázovej tabuľke.

Predstavte si príklad implementácie takejto tabuľky: .

Ako vidíte, existujú polia na ukladanie informácií o mene a hesle pre prístup do režimu nastavenia systému, o farbách hlavného pozadia správy používateľa, hornom a dolnom ráme (polia Mid_Color, Top_Color, Bot_Color). , o farbe a veľkosti hlavičky formulára slúžiaceho na zadávanie údajov používateľa (polia Form_Color, resp. FormTitleSize), o farbe, veľkosti a štýle písma samotného textu správy, informačných polí, ako aj samotné stránky návštevnej knihy (polia MessageFontColor, MessageFontSize, MessageFontFace, InfoFontColor, InfoFontSize, InfoFontFace, PageFontColor, PageFontSize a PageFontFace v uvedenom poradí), prepnite polia, aby ste umožnili automatické odosielanie upozornení na nové správy e-mailom zodpovednej osobe manažér alebo správca stránky), polia na uloženie e-mailovej adresy zodpovednej osoby, text správy s poďakovaním za správu zanechanú používateľom, so zoznamom nie sú povolené x slov a prepínač režimu ich filtrovania (ak je zapnutý druhý, slová v zozname neplatných slov budú automaticky nahradené v texte správy hviezdičkami a tým bude kontrola nad normatívnosťou slovnej zásoby textov stránok cvičené).

Vývoj systému integrácie knihy návštev predpokladá organizáciu webového rozhrania pre nastavenie všetkých parametrov, ktoré sme uvažovali (polia administračnej tabuľky).

Integrácia systému do už hotovej stránky v jej čistej forme môže spôsobiť určité ťažkosti tak pri vnímaní zdrojového textu, ako aj v budúcnosti, ak napríklad potrebujete dočasne deaktivovať knihu návštev na konkrétnej stránke. Preto sa pokúsime vyvinúť systém tak, aby jeho integrácia do hotovej lokality nebola náročná. Na to je potrebné vytvoriť samostatný modul systému a v prípade potreby ho zahrnúť do textu hlavnej stránky. Takže text vašej webovej stránky môže vyzerať napríklad takto:

ASP na striebornom podnose (časť - 15) – Kniha návštev

Ako môžete vidieť, v prvom prípade smernica na zahrnutie stránky s knihou návštev () je uvedený na správnom mieste a v druhom prípade je stránka pôvodnej stránky prezentovaná jednoducho vo forme troch postupne zaradených prvkov: začiatok, stránka knihy návštev a koniec. Použitie toho alebo onoho spôsobu usporiadania štruktúry stránky vášho webu je vecou vkusu a závisí tak od štruktúry pôvodného webu, ako aj od stupňa jeho zložitosti.

Hlavná stránka knihy návštev (súbor Guest.asp)

Prezentovaná aplikácia bude mať iba jednu stránku, ktorá bude slúžiť ako na zobrazovanie užívateľských správ, tak aj na navigáciu a zadávanie nových správ. V závislosti od hodnôt kľúčových parametrov sa vykoná jedna alebo iná akcia a stránka bude v jednom alebo druhom stave. V prvom rade budete musieť vyvinúť tú jeho časť, ktorá bude zobrazovať správy používateľov a ktorá bude obsahovať odkazy na časť, ktorá slúži na pridávanie nových správ.

Najprv si napíšme niekoľko funkcií pre prácu s reťazcami:

  1. Funkcia na nahradenie prázdneho reťazca medzerou a jednoduchého úvodzovky dvojitým:<% Function ChkString(string) If string = "" then string = " " ChkString = Replace(string, """, """") End Function %>
  2. Funkcia kontroly slovnej zásoby textu správy na normatívnosť. Ak sa slová zhodujú so slovami zo zoznamu neplatných slov, nahraďte ich hviezdičkami:<% Function ChkBadWords(String2) strBadWords = objRec2("BadWords") bwords = split(strBadWords, "|") For i = 0 to ubound(bwords) String2 = Replace(String2, bwords(i), string(len(bwords(i)),"*"), 1,-1,1) Next ChkBadWords = String2 end function %>
  3. Funkcia formátovania textu zadaného používateľom. Ak je to potrebné (ak je v databáze zodpovedajúci príznak), text sa skontroluje (filtruje) z hľadiska normatívnosti:<% Function FormatStr(String) on Error resume next String = Server.HTMLEncode(String) String2 = Replace(String, CHR(13), "") String2 = Replace(String, CHR(10) & CHR(10), "

    ") Reťazec2 = Nahradiť(Reťazec, CHR(10), "
    ") Ak objRec2("BadOn") = True then String2 = ChkBadWords(String2) End if FormatStr = String2 End Function %>

  4. Funkcia kontroly v teréne:<% Function ValidateField(sFieldValue, sFieldType) Valid = True Select Case LCase(sFieldType) Case "name" If Len(sFieldValue) = 0 Then Valid = False Case "message" If Len(sFieldValue) = 0 Then Valid = False End Select ValidateField = Valid End Function %>
  5. Postup pridávania nových správ (venujte pozornosť tomu, ako sa vypočítava IP adresa počítača, z ktorého bola správa odoslaná):
<% Sub Update strSql = "insert into Messages (Name, Country, Email, URL,IP,Message,Rating) values ("" strSql = StrSql & ChkString(Request.Form("name")) & "", "" strSql = StrSql & ChkString(Request.Form("Country")) & "", "" strSql = StrSql & ChkString(Request.Form("email")) & "", "" strSql = StrSql & ChkString(Request.Form("URL")) & "", "" strSql = StrSql & Request.ServerVariables("REMOTE_ADDR") & "", "" strSql = StrSql & ChkString(Request.Form("Message")) & "", "" strSql = StrSql & ChkString(Request.Form("Rating")) & "")" objConn.Execute (StrSql) %>

Potom sa parametre farieb, veľkostí, dizajnových fontov extrahujú a použijú z príslušnej tabuľky:

"color="<%=objRec2("PageFontColor")%>"veľkosť ="<%=objRec2("FormTitleSize")%>">Ďakujeme, že ste sa zapísali do našej knihy návštev!

"color="<%=objRec2("PageFontColor")%>"veľkosť ="<%=objRec2("PageFontSize")%>"> Kliknutím sem zobrazíte svoj záznam

Teraz v prípade potreby pošlite e-mail manažérovi alebo správcovi s upozornením na nový príspevok v knihe návštev:

<% If Not(Request.Form("email"))="" AND objRec2("AutoEmail")=True then Name = Request.Form("name") Email = Request.Form("email") sFrom = objRec2("YourEmail") sTo=Email sSubject = "Спасибо, Ваша запись в нашей гостевой книге принята!" sMessage = "Дорогой(ая) " & Name & vbcrlf _ & vbcrlf _ & objRec2("ThankMessage") & vbcrlf _ & vbcrlf _ & vbcrlf Set objNewMail = CreateObject("CDONTS.NewMail") objNewMail.Send sFrom, sTo, sSubject, sMessage Set objNewMail = Nothing End If If objRec2("YouEmail")=True then Name = Request.Form("name") Home_Page = Request.Form("url") Email = Request.Form("email") Message = Request.Form("message") Country = Request.Form("Country") Address = Request.ServerVariables("REMOTE_ADDR") Rating = Request.Form("Rating") If Rating ="0" then Rating="No Rating" End If sFrom = objRec2("YourEmail") sTo= objRec2("YourEmail") sSubject = "Новое сообщение" sMessage = "Привет," & vbcrlf _ & "Новое сообщение поступило в гостевую книгу" & vbcrlf _ & vbcrlf _ & ":" & vbcrlf _ & vbcrlf _ & Message & vbcrlf _ & vbcrlf _ & "Детали сообщения:" & vbcrlf _ & "Ваше имя: " & Name & vbcrlf _ & "Email: " & Email & vbcrlf _ & "URL: " & Home_Page & vbcrlf _ & "Страна: " & Country & vbcrlf _ & "Рейтинг: " & Rating & vbcrlf _ & "Адрес: " & Address Set objNewMail = CreateObject("CDONTS.NewMail") objNewMail.Send sFrom, sTo, sSubject, sMessage Set objNewMail = Nothing End If End Sub %>

Formulár na zadávanie nových hodnôt

Do procedúry je vhodné zapojiť aj zobrazenie formulára používaného na pridávanie nových správ (všimnite si, že formulár je uzavretý sám o sebe, teda modul, ktorý ho obsahuje, slúži ako reakcia naň):

<% Sub ShowForm(Sign) %>

>
"color="<%=objRec2("PageFontColor")%>"veľkosť ="<%=objRec2("FormTitleSize")%>"> Zanechajte záznam v našej knihe návštev

">* Označuje polia, ktoré si treba zapamätať

colspan=2> "color="<%=objRec2("PageFontColor")%>"veľkosť ="<%=objRec2("PageFontSize")%>"> Tvoje meno: *
"veľkosť=30> <% If dictFields(LCase("name")) Then Response.Write "Musíte zadať meno
"Iná odpoveď. Napíšte"
" End If %>
colspan=2> "color="<%=objRec2("PageFontColor")%>"veľkosť ="<%=objRec2("PageFontSize")%>"> Email:
"veľkosť=30>
colspan=2> "color="<%=objRec2("PageFontColor")%>"veľkosť ="<%=objRec2("PageFontSize")%>"> URL:
"color="<%=objRec2("PageFontColor")%>"veľkosť ="<%=objRec2("PageFontSize")%>"> http:// "veľkosť=30>
colspan=2> "color="<%=objRec2("PageFontColor")%>"veľkosť ="<%=objRec2("PageFontSize")%>"> Krajina:
"veľkosť=30>
"color="<%=objRec2("PageFontColor")%>"veľkosť ="<%=objRec2("PageFontSize")%>"> Ako hodnotíte našu stránku?
"color="<%=objRec2("PageFontColor")%>"veľkosť ="<%=objRec2("PageFontSize")%> ">Tvoje komentáre: *
"color="red" size="-2"><% If dictFields(LCase("message")) Then Response.Write "Вы не ввели сообщение
"Iná odpoveď. Napíšte"
" End If %>
<% End Sub %>

Potom nasleduje hlavná funkcia na zobrazenie pevného počtu používateľských správ (hodnota získaná z tabuľky administratívnych nastavení):

<% Sub Show NumPerPage=INT(objRec2("NumPerPage")) If Request.QueryString("page") = "" Then iPageCurrent = 1 Else iPageCurrent = CInt(Request.QueryString("page")) End If Set objRec = Server.CreateObject ("ADODB.Recordset") StrSql = "SELECT * FROM Messages ORDER BY ID DESC;" objRec.PageSize = NumPerPage objRec.CacheSize = NumPerPage objRec.Open StrSql,objConn,3,1,&H0001 iPages = objRec.PageCount TotalRows = objRec.RecordCount If iPageCurrent >iPages Then iPageCurrent = iPages If iPageCurrent< 1 Then iPageCurrent = 1 If iPages = 0 Then Response.Write "Не найденно записей!" Else ObjRec.AbsolutePage = iPageCurrent %>

"color="<%=objRec2("PageFontColor")%>"veľkosť ="<%=objRec2("PageFontSize")%>"> Celkom v knihe <%=TotalRows%> záznamy na <%=iPages%> strana(y)

<% iRecordsShown = 0 Do While iRecordsShown < NumPerPage And Not objRec.EOF Rating = ObjRec("Rating") If IsNull(Rating) or Rating="0" then Rating = "nr" Else Rating = ObjRec("Rating") End If If IsNull(ObjRec("URL")) then Link = "Не указан URL" Else Link = "http://" & ObjRec("URL") & "" End If Email = FormatStr(ObjRec("Email")) Name = FormatStr(ObjRec("Name")) %>
"> "color="<%=objRec2("InfoFontColor")%>"veľkosť ="<%=objRec2("InfoFontSize")%>"><%=ObjRec("DateID") %> "> "color="<%=objRec2("InfoFontColor")%>"veľkosť ="<%=objRec2("InfoFontSize")%>">Hodnotenie stránky: .gif" height="14" width="65">
"> "color="<%=objRec2("MessageFontColor")%>"veľkosť ="<%=objRec2("MessageFontSize")%>"><%=FormatStr(ObjRec("Message"))%>
"> "color="<%=objRec2("InfoFontColor")%>"veľkosť ="<%=objRec2("InfoFontSize")%>"> <% If IsEmpty(Email) or Email=" " then Response.Write Name Else Response.Write "" & Názov Koniec Ak %> "> "color="<%=objRec2("InfoFontColor")%>"veľkosť ="<%=objRec2("InfoFontSize")%>"><%=FormatStr(ObjRec("Country")) %> IP:<%= ObjRec("IP") %> "> "color="<%=objRec2("InfoFontColor")%>"veľkosť ="<%=objRec2("InfoFontSize")%>"> <%=Link%>

<% iRecordsShown = iRecordsShown + 1 objRec.MoveNext Loop if iPages >1 potom %>

"color="<%=objRec2("PageFontColor")%>"veľkosť ="<%=objRec2("PageFontSize")%>"> Stránky: <% For I = 1 To iPages If I = iPageCurrent Then Response.Write ""&ja&""Iná odpoveď. Napíšte" "&ja&""Koniec pri ďalšej odpovedi. Napíšte"" Else Response.Write " " End If End If objRec.Close Set objRec = Nothing End Sub %>

Venujte pozornosť tomu, ako sa vytvára a implementuje odkaz na zobrazenie ďalšej stránky s takouto „časťou“ správ:

Odpoveď.Napíšte" "&ja&" "

Ako vidíte, číslo stránky sa mu odovzdá ako hodnota parametra stránky a následne, ak sa táto hodnota nerovná 1, zobrazenie správ nezačne od prvej správy, ale od tej, ktorá bude byť prvý v účte na stránke s príslušným číslom uvedeným v parametri:

<% NumPerPage=INT(objRec2("NumPerPage")) If Request.QueryString("page") = "" Then iPageCurrent = 1 Else iPageCurrent = CInt(Request.QueryString("page")) End If %>Nasleduje zdrojový text samotného modulu, v ktorom sa vykoná pripojenie k databáze a načítajú sa záznamy (v popísanom príklade to bude jediný záznam) z tabuľky Admin administračných nastavení:<% Set objConn = Server.CreateObject ("ADODB.Connection") objConn.Open StrConn Set objRec2 = Server.CreateObject ("ADODB.Recordset") ConfigSql = "SELECT * FROM Admin;" objRec2.Open ConfigSql,objConn,0,1,&H0001 %>

Potom môžete upraviť názov a hlavné značky HTML stránky:

ASP na striebornom podnose 15. časť - DIY kniha hostí

"color="<%=objRec2("PageFontColor")%>"veľkosť ="<%=objRec2("PageFontSize")%>">

Zobraziť knihu návštev | Zanechajte záznam v knihe návštev

A nakoniec, hlavná slučka na spracovanie vašej hlavnej a jedinej stránky asp modulu bude vyzerať takto:

<% select case Request.QueryString("mode") case "post" Dim Field Dim dictFields Set dictFields = Server.CreateObject("Scripting.Dictionary") For Each Field in Request.Form If ValidateField(Request.Form(Field), Field) = False Then dictFields.Add LCase(Field), True End If Next If Request.Form.Count <>0 A dictFields.Count = 0 Potom zavolajte aktualizáciu Else If Request.Form.Count<>0 Potom End If ShowForm("Sign") End If case "show" Call Show case Else Call Show End Zvoľte %>

Uvažujeme tu len o dvoch prípadoch, ktoré zodpovedajú dvom funkciám našej webovej aplikácie: pridanie nového záznamu do knihy návštev (hodnota parametra režimu = „príspevok“) a prezeranie správ v knihe návštev (hodnota parametra režim = „zobraziť“ ).

<% objRec2.Close Set objRec2 = Nothing s objConn.Close Set objConn = Nothing Response.Write "

" %>

Záver

Zvažovali sme ešte jednu funkčnú súčasť stránky a okamžite sme ju spravili prenosnou. Výsledkom bol pomerne zložitý zdrojový kód z hľadiska vnímania. Hoci veľké množstvo parametrov získaných z administratívnej tabuľky trochu sťažilo pochopenie zdrojového kódu modulu, ich použitie raz a navždy vás ušetrí od nutnosti upravovať kód, keď sa zmenia. Nami vyvinutý systém je celkom prijateľný v používaní a vďaka modulárnosti jeho implementácie a prístupu k implementácii na existujúcich stránkach popísaný v článku ho možno použiť ako knihu návštev na stránkach takmer akéhokoľvek stupňa zložitosti. .

Samozrejme treba myslieť aj na webové rozhranie na úpravu, pridávanie a odstraňovanie administratívnych nastavení (schém), ale to zaberie veľa času, a preto sa tomu autor pokúsi priblížiť v niektorej z nasledujúcich častí tohto článku.

ComputerPress 11 "2001

Registrácia ovládacích prvkov sa vykonáva direktívou @Register, ktorá vám umožňuje používať používateľské ovládacie prvky a serverové ovládacie prvky v kóde HTML stránky pomocou špeciálnej syntaxe (deklaratívna syntax ovládania vlastného servera). Na základe analýzy týchto direktív môže analyzátor stránky priradiť značky k daným typom a pri vytváraní stránky vložiť ovládacie prvky už ako kontajnery vlastných typov - vetvy stromu ovládacích prvkov stránky.

Direktívy musia predchádzať prvému použitiu deklarovaných značiek, častejšie sa umiestňujú na začiatok stránky a v prípade registrácie viacerých kontrol, na stránkach s modulárnou štruktúrou môže počet takýchto deklarácií zaberať veľký počet riadkov . Keď zmeníte umiestnenie ovládacích prvkov, musíte hľadať riadky, ktoré vyžadujú zmeny v kóde všetkých stránok a používateľských ovládacích prvkov, na ktorých sú zaregistrované, čo je dosť nepohodlné.

Článok popisuje metódu, ktorá zjednodušuje registráciu ovládacích prvkov.

Pre príkazy na registráciu použijeme obyčajný textový súbor, v ktorom zhromaždíme všetky príkazy @ Register. Keďže virtuálne cesty možno použiť na deklarovanie používateľských ovládacích prvkov a pre serverové ovládacie prvky sú špecifikované iba menné priestory, môžeme v tomto súbore zhromaždiť všetky potrebné prepojenia a odkazy na súbory ascx budú správne pre každý priečinok v projekte. Takto vyzerá tento súbor v jednom z projektov:


<%@ Register TagPrefix="ch" Namespace="ControlsSharp.HtmlControls" Assembly="ControlsSharp"%>

<%@ Register TagPrefix="cw" Namespace="ControlsSharp.WebControls" Assembly="ControlsSharp"%>

<%@ Register TagPrefix="c" Namespace="ControlsSharp.CustomControls" Assembly="ControlsSharp"%>

<%@ Register TagPrefix="b" Namespace="ControlsBasic.CustomControls" Assembly="ControlsBasic"%>

<%@ Register TagPrefix="cu" TagName="bottommenu" Src="~/UserControls/Menu/cu_menu_bottom.ascx" %>

<%@ Register TagPrefix="cu" TagName="leftmenu" Src="~/UserControls/Menu/cu_menu_left.ascx" %>

<%@ Register TagPrefix="cu" TagName="topmenu" Src="~/UserControls/Menu/cu_menu_top.ascx" %>

Pomenujeme súbor register.inc a umiestnime ho do priečinka /inc nášho webového projektu.

Tento súbor bude obsahovať všetky potrebné odkazy, pridáme alebo zmeníme registráciu používateľa alebo serverového ovládacieho prvku.

Teraz musí byť vytvorený súbor nejakým spôsobom zahrnutý do kódu stránky. Robíme to pomocou smernice SSI (zahŕňa stranu servera) #include. Táto direktíva umožňuje zahrnúť do kódu stránky statické a dynamické súbory, pričom ich spracovávame na základe mapovania IIS, t.j. zadanie súboru asp alebo aspx ako zdroja spôsobí spracovanie súboru príslušným procesom a skopírovanie výsledkov tohto spracovania na výstupnú stránku. V ASP bola smernica #include veľmi široko používaná a umožňovala modularizáciu stránky. S príchodom ASP.NET sa to stalo pohodlnejšie robiť to inými spôsobmi, napríklad pomocou používateľských ovládacích prvkov. Budúce verzie ASP.NET budú implementovať modularitu pomocou vzorových stránok. Smernica #include vo všeobecnosti stratila zmysel a zostala zachovaná najmä kvôli spätnej kompatibilite a zjednodušeniu migrácie projektov ASP na .Net.

Keďže máme jednoduchý textový súbor, nevykoná sa žiadne spracovanie a pred spustením dynamického obsahu sa celý obsah súboru skopíruje do kódu stránky. Tie. pridanie nášho súboru register.inc napríklad na začiatok stránky je takmer to isté, ako keby ste tam napísali všetky smernice @Register.

Aby sme neboli závislí na fyzickom umiestnení súboru, opäť použijeme syntax virtuálnej cesty a do kódu súboru aspx pridáme nasledujúci riadok:

Uistite sa, že všetko funguje, ak nie, opravte nesprávne cesty.

Zostáva vykonať ešte jednu operáciu. Teraz, ak sa pokúsite získať súbor /inc/register.inc z odkazu vo vašom prehliadači, môžete to ľahko urobiť. IIS ho dáva do vašich rúk, ako aj do rúk útočníka, úplne zadarmo, hoci obsahuje cesty fyzickej štruktúry vášho webu.

Aby sa to nestalo, využívame možnosti synchrónneho handlera HttpForbiddenHandler, ktorý nám umožňuje chrániť súbory určitého typu pred vydaním na žiadosť používateľa. Tento prístup je pohodlný a často sa používa napríklad na ochranu databázových súborov MS Access používaných v projekte. Aby boli súbory s príponou *.inc chránené pomocou tohto obslužného programu, musíte IIS povedať, že tieto súbory budú spracované procesom ASP.NET, inými slovami, nakonfigurovať IIS na mapovanie na súbory tohto typu.

Podrobný popis procesu konfigurácie pre IIS nájdete v časti AKO: Použiť ASP.NET na ochranu typov súborov (http://support.microsoft.com/kb/815152/EN-US/). Potrebujeme vytvoriť mapovanie iba pre súbory *.inc. Po dokončení krokov popísaných v tomto dokumente budú všetky požiadavky na súbory s touto príponou spracované procesom ASP.NET a súbor web.config budete musieť upraviť takto:

To je všetko, teraz pri pokuse o získanie súboru /inc/register.inc cez priamy odkaz sa používateľovi zobrazí chyba B.

Aby ste napríklad nezaregistrovali aspnet_isapi.dll, váš poskytovateľ to nechce urobiť, môžete použiť schopnosť SSI špecifikovať súbory akéhokoľvek typu a podvádzať pomocou rozšírenia jedného z typov, ktoré sú už štandardne namapované v IIS pre súbor s príkazmi @Register. Na tento účel budú vhodné rozšírenia *.cs alebo *.vb. Tieto súbory obsahujú zdrojový kód a zvyčajne sa neskopírujú na server. Ak ste sa zrazu pomýlili a skopírovali, nebudete ich môcť získať na žiadosť prehliadača – keď sa o to pokúsite, používateľovi sa zobrazí chyba B. Stáva sa to preto, že mapovanie v IIS je predvolene nakonfigurované pre súbory tohto typu a príslušná prípona je už zaregistrovaná v sekcii súbor machine.config. Vo Visual Studiu, aby vám kompilátor nevypísal chybové hlásenie, vložte príponu, o ktorú kompilátor nemá záujem: v projektoch C# je to *.vb, v projektoch VB je to *.cs.
Záver

Opísaný spôsob umožňuje zaregistrovať ovládacie prvky na jednom mieste pre celý projekt. Následná úprava tohto súboru si vyžaduje menšie úsilie, ako keby ste to museli robiť bežným spôsobom. Skúste použiť SSI #include vo vnútri súborov, ktoré vkladáte – to vám umožní organizovať určitý druh hierarchie a dedenia, čo môže byť výhodné pre veľké projekty

Smernice v AngularJS hrajú dôležitú úlohu. Direktívy možno použiť na učenie nových trikov HTML a dokonca si môžete vytvoriť svoje vlastné značky alebo atribúty HTML. Smernice tiež pomáhajú udržiavať prirážku plynulejšiu a definujú pekný spôsob oddeľovania kódu a prirážky od seba.

View je HTML šablóna. Zobrazenie nie je nič iné ako informácie, ktoré chcete zobraziť prehliadaču koncového používateľa. Pohľad v AngularJS sa tiež nazýva ako zostavený DOM. View využíva príkazy na vykreslenie údajov pomocou šablóny HTML.

Tento článok je súčasťou IV webovej stránky na sledovanie projektu vytvorenej v AngularJS a ASP.NET Web API. Doteraz sme vytvorili , vytvorili a máme .

Vďaka skontrolovať túto sériu Angular a opraviť chyby.

Už sme videli objekt $scope, ktorý poskytuje model pre zobrazenie. Kód modelu nie je zmiešaný s kódom HTML, ktorý zapisujeme do našich pohľadov. Údaje sa skôr presúvajú z modelu do zobrazení pomocou výrazov viazania údajov. Týmto spôsobom môžu vývojári dosiahnuť Separation of Concerns (SoC). Keďže modely sú nezávislé od pohľadov, možno ich viazať na ľubovoľné zobrazenie. Táto väzba modelu sa vykonáva pomocou smerníc AngularJS.

Už sme videli niekoľko direktív Angular v našej aplikácii, ako je ng-app, ktorá zavádza AngularJS, ako aj ng-controller, ktorý sprístupňuje ovládač HTML. Z ovládača môžeme dáta naviazať na pohľady pomocou Angular ((výraz)).

V tomto článku sa pozrieme na niekoľko ďalších direktív AngularJS, ktoré prichádzajú s Angularom. Jedným z nich je ng-opakovať. Skúsme použiť direktívu ng-repeat na našej stránke EmployeeDetails.html, ktorú nájdete v sprievodnom článku. Upravte adresu URL služby v našom súbore EmployeesController.js. Adresa URL služby je nasledovná:

http://localhost:2464/api/ptemployees

Teraz upravíme stránku EmployeeDetails.html, ako je znázornené v nasledujúcom kóde -

((zamestnanec ID)) ((emp.employeeName)) ((označenie emp.)) ((emp.contactNo)) ((emp.eMailID)) ((emp.skillSets))

Vymeňte zo stránky EmployeeDetails.html s vyššie uvedeným kódom. Výstup vyššie uvedeného kódu je zobrazený tu:

V tomto kóde sme použili direktívu ng-repeat AngularJS. Je podobná slučke for alebo foreach v .NET. Tu dostávame IEnumerable zber pomocou ASP.NET Web API. Túto kolekciu používame ako model v našom Angular Controller. Pomocou tohto modelu iterujeme objekty zamestnancov do nášho pohľadu. Toto je veľmi užitočná direktíva, ktorá sa opakuje cez objekty v kolekcii a zobrazuje údaje v zobrazení.

Teraz skúsme pridať filter na vyhľadanie konkrétneho zamestnanca z kolekcie a zobrazenie zamestnanca na základe daného mena zamestnanca alebo znaku mena zamestnanca. Doteraz sme model stiahli a použili v našich pohľadoch. Funguje to aj inak. Môžeme prinútiť naše názory hovoriť o našich modeloch, ktoré sú v našich ovládačoch.

Ak chcete pridať filter vyhľadávania na základe mena zamestnanca, upravíme stránku EmployeeDetails.html pridaním vstupných prvkov HTML, ako je uvedené nižšie -

Zadajte meno zamestnanca alebo znak na vyhľadávanie -

Vyššie uvedený kód pridajte hneď za

tag. Vo vyššie uvedenom kóde používame direktívu ng-model, ktorá nám umožňuje posielať dáta späť do modelu. Na základe týchto údajov vykonáme vyhľadávanie zamestnanca pomocou vlastnosti EmployeeName. Uistite sa, že vlastnosť EmployeeName je deklarovaná v našom modeli, čo urobíme v nasledujúcich krokoch. Všimnite si tiež, že používame ng-predložiť smernicu, ktorá zavolá Vyhľadajte zamestnanca funkciu z nášho ovládača.

Teraz upravme súbor EmployeesController.js tak, aby sme mohli zamestnanca vyhľadať na základe vlastnosti EmployeeName ako kritéria vyhľadávania. Kód je zobrazený nižšie -

(funkcia () ( var EmployeesController = funkcia ($scope,$http) ( var zamestnanci = funkcia (serviceResp) ( $scope.Employees = serviceResp.data; ); $scope.SearchEmployees = funkcia (meno zamestnanca) ( $http.get ("http://localhost:2464/api/ptemployees/" + EmployeeName) .then(zamestnanci, errorDetails); ); var errorDetails = function (serviceResp) ( $scope.Error="Niečo sa pokazilo??"; ) ; $http.get("http://localhost:2464/api/ptemployees") .then(employees,errorDetails); $scope.Title = "(!LANG:Stránka s podrobnosťami o zamestnancovi"; $scope.EmployeeName = null; }; app.controller("EmployeesController", EmployeesController); }()); !}

Vo vyššie uvedenom kóde sme do nášho objektu $scope pridali metódu SearchEmployee() ako model. Táto metóda bude hľadať zamestnancov na základe mena zamestnanca alebo charakteru mena zamestnanca. Tiež sme vyhlásili Meno zamestnanca vlastnosť v našom kontrolóre na konci tohto kódu. Metóda SearchEmployees načíta metódu webového rozhrania API. Upravil som metódu GET, ako je uvedené tu:

Verejná správa HttpResponseMessage Get(názov reťazca) ( var zamestnanci = EmployeesRepository.SearchEmployeesByName(meno); Odpoveď HttpResponseMessage = Request.CreateResponse(HttpStatusCode.OK, zamestnanci); vrátená odpoveď; )

Kód úložiska zamestnancov je znázornený tu:

verejný statický zoznam SearchEmployeesByName(string zamestnanecName) ( ProjectTrackingDBEntities dataContext = new ProjectTrackingDBEntities(); var query = od zamestnanca v dataContext.Employees, kde zamestnanec.EmployeeName.Contains(employeeName) vyberie zamestnanca; return query.ToList(); )

Po všetkých týchto zmenách teraz spustite stránku EmployeeDetails.html a pozrite si výstup.

Vo vyššie uvedenom výstupe hľadáme zamestnancov, ktorých meno obsahuje znak 'J'.

AngularJS filtre rozšíriť správanie záväzných výrazov alebo smerníc. Filtre sa používajú s väzbovými výrazmi na formátovanie viazaných údajov. Keď sa používajú so smernicami, pridávajú k smerniciam ďalšie akcie. AngularJS ponúka množstvo filtrov, ktoré môžeme použiť na formátovanie hodnôt výrazu a zobrazenie hodnôt/údajov v našich zobrazeniach. Môžete použiť filtre v zobrazeniach, ovládačoch a službách. Syntax použitia filtrov do zobrazení je (( výraz | filter1 | filter2 | ...)).

Teraz vyskúšame filter, ktorý zoradí údaje podľa mena zamestnanca. Ak chcete zoradiť údaje, pridajte filter do nášho ng-repeat pomocou | operátor, ako je znázornené tu:

Vo vyššie uvedenom kóde pridávame filter do našej smernice ng-repeat. OrderBy:'employeeName' zoradí údaje podľa mena zamestnanca vzostupne. Výstup si môžete pozrieť tu:

Ak chcete zobraziť údaje v zostupnom poradí, môžete zmeniť filter, ako je znázornené tu:

Vo vyššie uvedenom kóde sme na zoradenie mien zamestnancov v zostupnom poradí použili (-) znamienko mínus. Podobne môžete použiť znamienko (+) na zoradenie vzostupne.

Môžete tiež využiť limitTo filter na obmedzenie počtu záznamov. Povedzme napríklad, že naraz chcete zobraziť 5 zamestnancov. Ak chcete zobraziť obmedzený počet záznamov na našej stránke EmployeeDetails.html, upravte direktívu ng-repeat, ako je uvedené tu-

Výstup je zobrazený tu:

Ak teraz spustíte stránku ProjectDetails.html, dátum sa zobrazí s časom. Môžete použiť dátumový filter, ako je uvedené v nasledujúcom kóde -

((proj.projectID)) ((proj.projectName)) ((proj.startDate|date:"short")) ((proj.endDate|date:"short")) ((proj.clientName))

Výstup tejto stránky je nasledovný:

Môžete použiť rôzne formáty dátumu, ako napríklad - fulldate, longdate, mediumdate, shortdate atď. Teraz otvorme stránku EmployeeDetails.html a spustite ju. Znak „Z“ používam na zobrazenie zamestnancov, ktorých meno zamestnanca obsahuje Z.

Ak spozorujete, na výstupe sa zobrazí hlavička tabuľky Zamestnanec bez údajov. Ak filter neprinesie žiadny výsledok, môžeme nadpis zneviditeľniť pomocou direktívy ng-show. Použite direktívu ng-show v našej značke tabuľky, ako je uvedené v kóde nižšie, a skúste spustiť aplikáciu so znakom Z. Teraz neuvidíte stĺpce tabuľky, keď je model Zamestnanci nulový. Atribút ng-show vyhodnotí model Zamestnanci a podľa toho buď zobrazí tabuľku, alebo skryje tabuľku.

Podobne existuje množstvo smerníc, ktoré môžete použiť v AngularJS. Môžete tiež navrhnúť vlastnú smernicu, ktorú uvidíme neskôr v tejto sérii. Aplikujte vyhľadávanie na rôzne zobrazenia podľa vašich požiadaviek v našich zobrazeniach. V našom ďalšom článku sa na to pozrieme