მოძებნეთ სიტყვები დამატებითი ოპერატორების გამოყენებით. მონაცემთა ბაზის შექმნა და მომზადება

ASP.NET-ის ყველა დეველოპერმა უნდა იცოდეს გვერდის დირექტივები. თუ დამწყები ხართ და გსურთ გაეცნოთ გვერდის დირექტივებს, შეგიძლიათ წაიკითხოთ ეს სტატია.

ასე რომ, პირველი შეკითხვა ეხება გვერდის დირექტივებს.

რა არის გვერდის დირექტივა?

ძირითადად გვერდის დირექტივები არის ბრძანებები. ამ ბრძანებებს შემდგენელი იყენებს გვერდის შედგენისას.

როგორ გამოვიყენოთ დირექტივები ASP.NET გვერდზე

ASP.NET გვერდზე დირექტივის დამატება არ არის რთული. მარტივია დირექტივების დამატება ASP.NET გვერდზე. შეგიძლიათ დაწეროთ დირექტივები შემდეგ ფორმატში:

<%@%>

იხილეთ დირექტივის ფორმატი, ის იწყება "<%@" and ends with "%>". საუკეთესო გზაა დირექტივის განთავსება თქვენი გვერდის ზედა ნაწილში. მაგრამ თქვენ შეგიძლიათ განათავსოთ დირექტივა ნებისმიერ გვერდზე. კიდევ ერთი რამ, შეგიძლიათ განათავსოთ ერთზე მეტი ატრიბუტი ერთ დირექტივაში.

აქ არის დირექტივების სრული სია:

  • @გვერდი
  • @ოსტატი
  • @Control
  • @იმპორტი
  • @ახორციელებს
  • @რეგისტრაცია
  • @ასამბლეა
  • @MasterType
  • @Output Cache
  • @PreviousPageType
  • @მინიშნება

მოდით განვიხილოთ რაღაც თითოეული დირექტივის შესახებ.

როდესაც გსურთ ASP.NET გვერდის ატრიბუტების მითითება, მაშინ უნდა გამოიყენოთ @Page Directive. მოგეხსენებათ, ASP.NET გვერდი არის ASP.NET-ის ძალიან მნიშვნელოვანი ნაწილი, ამიტომ ეს დირექტივა ჩვეულებრივ გამოიყენება ASP.NET-ში.

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

ახლა თქვენ გაქვთ გარკვეული ინფორმაცია @Page Directive-ების შესახებ. @Master Directive საკმაოდ ჰგავს @Page დირექტივას. ერთადერთი განსხვავება ისაა, რომ @master დირექტივა არის Master გვერდებისთვის. უნდა გაითვალისწინოთ, რომ @Master Directive-ის გამოყენებისას თქვენ განსაზღვრავთ შაბლონის გვერდის თვისებას. შემდეგ ნებისმიერ შიგთავსის გვერდს შეუძლია დაიმკვიდროს Master Page-ში განსაზღვრული ყველა თვისება. მაგრამ არის რამდენიმე თვისება, რომელიც ხელმისაწვდომია მხოლოდ Master Page-ში.

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

@Control

@Control აშენებს ASP.NET მომხმარებლის კონტროლს. როდესაც იყენებთ დირექტივას, თქვენ განსაზღვრავთ თვისებებს, რომლებიც მემკვიდრეობით მიიღება მომხმარებლის კონტროლის მიერ და ეს მნიშვნელობები ენიჭება მომხმარებლის კონტროლს

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

როგორც მოგეხსენებათ, C# ან VB კლასის გამოყენებამდე უნდა განსაზღვროთ სახელთა სივრცეები თქვენს .cs კლასში. ასე რომ, @Import Directive შემოაქვს სახელთა სივრცეები. ეს დირექტივა მხარს უჭერს მხოლოდ ერთ ატრიბუტს "namespace" და ეს ატრიბუტი იღებს სტრიქონის მნიშვნელობას, რომელიც განსაზღვრავს იმპორტირებულ სახელთა სივრცეს. ერთი რამ, რაც უნდა გაითვალისწინოთ არის ის, რომ @Import Directive არ შეიძლება შეიცავდეს ერთზე მეტ ატრიბუტს/მნიშვნელობის წყვილს. მაგრამ შეგიძლიათ გამოიყენოთ მრავალი ხაზი.

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

@ახორციელებს

@Implements დირექტივა იღებს ASP.NET გვერდებს .Net Framework ინტერფეისების დასანერგად. ეს დირექტივა მხარს უჭერს მხოლოდ ერთი ატრიბუტის ინტერფეისს.

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

@რეგისტრაცია

როდესაც შექმნით მომხმარებლის კონტროლს და გადაათრევთ მომხმარებლის კონტროლს თქვენს გვერდზე, ნახავთ @Register დირექტივას. ეს დირექტივა არეგისტრირებს თქვენს მომხმარებლის კონტროლს გვერდზე ისე, რომ კონტროლის წვდომა იყოს გვერდზე.

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

@ასამბლეა

@Assembly დირექტივა ანიჭებს ასამბლეებს გვერდზე ან ASP.NET მომხმარებლის კონტროლს, რითაც ასამბლეის ყველა კლასი და ინტერფეისი ხელმისაწვდომია კლასისთვის. ეს დირექტივა მხარს უჭერს ორ ატრიბუტს Name და src. Name ატრიბუტი განსაზღვრავს ასამბლეის სახელს და src ატრიბუტი განსაზღვრავს ასამბლეის წყაროს.

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

@MasterType

@MasterType დირექტივა აკავშირებს კლასის სახელს ASP.NET გვერდზე, რათა მიიღოთ მკაცრად აკრეფილი მითითებები ან წევრები, რომლებიც შეიცავს მითითებულ მთავარ გვერდზე. ეს დირექტივა მხარს უჭერს ორ ატრიბუტს Typename და virtualpath. Typename ადგენს მიღებული კლასის სახელს, საიდანაც მიიღება მკაცრად აკრეფილი ან მითითების წევრები და virtualpath ადგენს გვერდის მდებარეობას, საიდანაც ისინი არის მოძიებული.

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

@output ქეში

ის აკონტროლებს ASP.NET გვერდის გამომავალი ქეშირების პოლიტიკას.

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

ეს დირექტივა განსაზღვრავს გვერდს, საიდანაც სათავეს იღებს ნებისმიერი გვერდითი პოსტი.

@მინიშნება

ეს დირექტივა აცხადებს, რომ სხვა გვერდი ან მომხმარებლის კონტროლის შეძახილი უნდა შესრულდეს აქტიურ გვერდზე ან კონტროლთან ერთად. ეს დირექტივა მხარს უჭერს ერთი ატრიბუტის ვირტუალურ გზას. ის ადგენს გვერდის მდებარეობას ან მომხმარებლის კონტროლს, საიდანაც იქნება მითითებული აქტიური გვერდი.

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

დასკვნითი სიტყვები

ვიმედოვნებ, რომ თქვენ მიიღებთ ცოდნას აქედან. გთხოვთ კომენტარი გააკეთოთ იმაზე, თუ როგორ მოგწონთ ეს სტატია. თქვენი კომენტარები ჩემთვის ძალიან ღირებულია, რადგან მხოლოდ თქვენ მეტყვით, სად ვცდები და რა გაუმჯობესება მჭირდება უკეთესი სტატიის დასაწერად. გთხოვთ დააკომენტარეთ და მიაწოდოთ თქვენი გამოხმაურება.

რა არის სტუმრების წიგნი?

რა თქმა უნდა, აქ საუბარია ყველაზე ტიპურ სტუმრების წიგნზე. უპირველეს ყოვლისა, ეს არის სისტემა, რომელიც მომხმარებელს აძლევს შესაძლებლობას შეიყვანოს ტექსტი, შეარჩიოს კონკრეტული საიტის შეფასება და ასევე დააკონკრეტოს საკუთარი მონაცემები (სახელი, ელ. ფოსტა, http და ა.შ.). ასევე არის სისტემა სხვადასხვა მომხმარებლის მიერ შეყვანილი მონაცემების წარდგენისთვის, ნავიგაციის, შეტყობინებების ავტორებისთვის ელფოსტის გაგზავნის შესაძლებლობით. ვარიაციები ასევე შესაძლებელია სხვადასხვა პარამეტრებით და ნორმატიული ლექსიკის კონტროლით.

რა გვჭირდება

რა თქმა უნდა, ვარაუდობენ, რომ მკითხველი იცნობს ASP და SQL პროგრამირების საფუძვლებს (ამისთვის სავსებით საკმარისი იქნება ამ სტატიის პირველი ნაწილების გაცნობა). გარდა ამისა, ჩვენ გვჭირდება Microsoft SQL Server 7.0 ან 2000, HTML ან ტექსტური რედაქტორი (გირჩევთ გამოიყენოთ Macromedia Dreamweaver UltraDev 4.0) და ცოტა მოთმინება.

მონაცემთა ბაზის შექმნა და მომზადება

მომხმარებლების მიერ შეყვანილი მონაცემების შენახვის ორგანიზებისთვის საჭიროა ერთი ცხრილი, სადაც შეგიძლიათ შექმნათ ველები მომხმარებლის სახელის, მისი ელ.ფოსტის მისამართის, საცხოვრებელი ქვეყნის, საიტის მისამართის, IP მისამართის, საიტის მომხმარებლის რეიტინგის მნიშვნელობის შესანახად ხუთბალიანი შკალით. და ა.შ.:

იმისათვის, რომ სისტემა ადვილად მოხდეს არსებულ საიტებზე, რეკომენდებულია სხვა ცხრილის დაგეგმვა ფერების და სხვა პარამეტრების შესანახად. ეს საშუალებას მოგცემთ შეცვალოთ მითითებული პარამეტრები მომავალში სტუმრების წიგნის აპლიკაციის მოდულების წყაროს ტექსტებში შესაბამისი პარამეტრების შეცვლის გარეშე.

  • გაუშვით მონაცემთა წყაროების ODBC კონფიგურატორი - დაწყება-> პარამეტრები-> პანელი-> ადმინისტრაციული ხელსაწყოები-> მონაცემთა წყაროები ODBC.
  • გადადით System DSN ჩანართზე და შექმენით მონაცემთა ახალი წყარო, დააწკაპუნეთ Add…
  • დრაივერების სიაში, რომელიც გამოჩნდება, აირჩიეთ მონაცემთა ბაზის დრაივერი - Microsoft SQL Server და დააჭირეთ შემდეგი.
  • მონაცემთა წყაროს სახელის სტრიქონში მიუთითეთ თქვენი მონაცემთა ბაზის სახელი (აღწერილ მაგალითში Gustbook არის სახელი, რომლითაც მას მომავალში მიმართავთ).
  • სერვერის ხაზში მიუთითეთ სერვერი, რომელთანაც დაკავშირება მოხდება და დააჭირეთ შემდეგი.
  • აირჩიეთ ავთენტიფიკაციის რეჟიმი SQL Server-ით…, დააყენეთ მომხმარებლის სახელი და პაროლი SQL სერვერთან დასაკავშირებლად; განსაზღვრეთ სერვერის საკომუნიკაციო პროტოკოლი (კლიენტის კონფიგურაცია - TCP/IP ღილაკი) და ორჯერ დააწკაპუნეთ შემდეგი, შემდეგ დააწკაპუნეთ Finish.
  • თქვენ იხილავთ სტატისტიკას განხორციელებული ქმედებების შესახებ და შეგიძლიათ გამოიყენოთ ტესტის მონაცემთა წყაროს ღილაკი მონაცემთა წყაროს შესამოწმებლად.
  • შედეგად, თქვენ იხილავთ ხაზს თქვენი სისტემის მონაცემთა წყაროების სიაში.

ახლა, როდესაც მონაცემთა ბაზა მზად არის, შეგიძლიათ პირდაპირ გააგრძელოთ სტუმრების წიგნის შექმნა.

სისტემის ინტეგრაცია მზა ვებსაიტში

გასაგებია, რომ თავად სტუმრების წიგნს აზრი არ აქვს. თავად განსაჯეთ: ვის სჭირდება საიტი, რომელიც შექმნილია მხოლოდ მკითხველთა მოსაზრებების შესაგროვებლად. ყოველივე ამის შემდეგ, იმისათვის, რომ შეაგროვოთ მოსაზრებები რაიმეს შესახებ, ჯერ ეს რაღაც უნდა წარმოადგინოთ მათ განსჯაზე. ამიტომ, განსაკუთრებული ყურადღება უნდა მიექცეს საკითხებს, რომლებიც დაკავშირებულია სისტემის მზა საიტებში ჩანერგვის გამარტივებასთან.

კერძოდ, კონკრეტული საიტის დამახასიათებელ მახასიათებლებზე სისტემის მორგების გასაადვილებლად, რეკომენდებულია (როგორც ზემოთ აღინიშნა) შექმნათ სპეციალური ცხრილი ყველა ამ პარამეტრის შესანახად, რათა შეიყვანოთ თქვენი საიტისთვის სპეციფიკური გარკვეული მნიშვნელობები. მასში. ამ მიდგომის აშკარა უპირატესობა ის არის, რომ სისტემის უკვე დასრულებულ საიტზე ჩასართავად არ გჭირდებათ ცვლილებების შეტანა მოდულების საწყის კოდში, საჭიროა მხოლოდ პარამეტრების შეცვლა მონაცემთა ბაზის შესაბამის ცხრილში.

წარმოიდგინეთ ასეთი ცხრილის განხორციელების მაგალითი: .

როგორც ხედავთ, არის ველები სახელისა და პაროლის შესახებ ინფორმაციის შესანახად სისტემის დაყენების რეჟიმში წვდომისთვის, მომხმარებლის შეტყობინების ძირითადი ფონის ფერების, ზედა და ქვედა ჩარჩოების შესახებ (შესაბამისად Mid_Color, Top_Color, Bot_Color ველები) მომხმარებლის მონაცემების შესაყვანად გამოყენებული ფორმის სათაურის ფერისა და ზომის შესახებ (Form_Color და FormTitleSize ველები, შესაბამისად), თავად შეტყობინების ტექსტის შრიფტის ფერის, ზომისა და სტილის შესახებ, საინფორმაციო ველები, ასევე. თავად სტუმრების წიგნის გვერდები (შესაბამისად, ველები MessageFontColor, MessageFontSize, MessageFontFace, InfoFontColor, InfoFontSize, InfoFontFace, PageFontColor, PageFontSize და PageFontFace შესაბამისად), გადართეთ ველები, რათა ჩართოთ ელ.ფოსტის ავტომატური გაგზავნა, მაგალითად, ახალი შეტყობინების გაგზავნისთვის. მენეჯერი ან საიტის ადმინისტრატორი), პასუხისმგებელი პირის ელექტრონული ფოსტის მისამართის შესანახი ველები, მომხმარებლის მიერ დატოვებული შეტყობინებისთვის მადლობის ტექსტი, სიით დაუშვებელია. x სიტყვები და გადამრთველი მათი ფილტრაციის რეჟიმისთვის (თუ ეს უკანასკნელი ჩართულია, მაშინ არასწორი სიტყვების სიაში სიტყვები ავტომატურად შეიცვლება გზავნილის ტექსტში ვარსკვლავით და ამით გააკონტროლებს საიტის ტექსტების ლექსიკის ნორმატიულობას. განხორციელდება).

სტუმრების წიგნის ინტეგრაციის სისტემის შემუშავება გულისხმობს ვებ ინტერფეისის ორგანიზებას ჩვენ მიერ განხილული ყველა პარამეტრის დასაყენებლად (ადმინისტრაციის ცხრილის ველები).

სისტემის ინტეგრაცია უკვე დასრულებულ საიტზე მისი სუფთა სახით შეიძლება შექმნას გარკვეული სირთულეები როგორც წყაროს ტექსტის აღქმაში, ასევე მომავალში, თუ, მაგალითად, მოგიწევთ დროებით გამორთოთ სტუმრების წიგნი კონკრეტულ საიტზე. ამიტომ, ჩვენ შევეცდებით შევიმუშაოთ სისტემა ისე, რომ მისი ინტეგრაცია მზა საიტზე არ იყოს რთული. ამისათვის აუცილებელია სისტემის დამოუკიდებელი მოდულის ჩამოყალიბება და საჭიროების შემთხვევაში მისი ძირითადი საიტის ტექსტში ჩართვა. ასე რომ, მაგალითად, თქვენი ვებგვერდის ტექსტი შეიძლება ასე გამოიყურებოდეს:

ASP ვერცხლის ლანგარზე (ნაწილი - 15) – სტუმრების წიგნი

როგორც ხედავთ, პირველ შემთხვევაში, დირექტივა, რომ შეიტანოს გვერდი სტუმრების წიგნით () მითითებულია სწორ ადგილას, ხოლო მეორე შემთხვევაში, ორიგინალური საიტის გვერდი წარმოდგენილია უბრალოდ სამი თანმიმდევრულად ჩართული ელემენტის სახით: დასაწყისი, სტუმრების წიგნის გვერდი და დასასრული. თქვენი საიტის გვერდის სტრუქტურის ორგანიზების ამა თუ იმ ხერხის გამოყენება გემოვნების საკითხია და დამოკიდებულია როგორც ორიგინალური საიტის სტრუქტურაზე, ასევე მის სირთულის ხარისხზე.

სტუმრების წიგნის მთავარი გვერდი (Guest.asp ფაილი)

წარმოდგენილ აპლიკაციას ექნება მხოლოდ ერთი გვერდი, რომელიც მოემსახურება როგორც მომხმარებლის შეტყობინებების ჩვენებას, ასევე ნავიგაციას და ახალი შეტყობინებების შეყვანას. ძირითადი პარამეტრების მნიშვნელობიდან გამომდინარე, შესრულდება ერთი ან სხვა მოქმედება და გვერდი იქნება ამა თუ იმ მდგომარეობაში. უპირველეს ყოვლისა, თქვენ უნდა განავითაროთ მისი ის ნაწილი, რომელიც აჩვენებს მომხმარებლის შეტყობინებებს და რომელიც შეიცავს ბმულებს იმ ნაწილისთვის, რომელიც ემსახურება ახალი შეტყობინებების დამატებას.

პირველ რიგში, მოდით დავწეროთ რამდენიმე ფუნქცია სტრიქონებთან მუშაობისთვის:

  1. ცარიელი სტრიქონის ინტერვალით და ერთი ციტატის ჩანაცვლების ფუნქცია ორმაგით:<% Function ChkString(string) If string = "" then string = " " ChkString = Replace(string, """, """") End Function %>
  2. შეტყობინების ტექსტის ლექსიკის ნორმატიულობის შემოწმების ფუნქცია. თუ სიტყვები ემთხვევა სიტყვებს არასწორი სიტყვების სიიდან, შეცვალეთ ისინი ვარსკვლავით:<% 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. მომხმარებლის მიერ შეყვანილი ტექსტის ფორმატირების ფუნქცია. საჭიროების შემთხვევაში (თუ მონაცემთა ბაზაში არის შესაბამისი დროშა), ტექსტი შემოწმდება (გაფილტრული) ნორმატიულობისთვის:<% Function FormatStr(String) on Error resume next String = Server.HTMLEncode(String) String2 = Replace(String, CHR(13), "") String2 = Replace(String, CHR(10) & CHR(10), "

    ") String2 = ჩანაცვლება (სტრიქონი, CHR(10), "
    ") თუ objRec2("BadOn") = True, მაშინ String2 = ChkBadWords(String2) End if FormatStr = String2 End ფუნქცია %>

  4. ველის შემოწმების ფუნქცია:<% 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. ახალი შეტყობინებების დამატების პროცედურა (ყურადღება მიაქციეთ როგორ გამოითვლება კომპიუტერის IP მისამართი, საიდანაც გაგზავნილია შეტყობინება):
<% 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) %>

ამის შემდეგ, ფერების, ზომის, დიზაინის შრიფტების პარამეტრები ამოღებულია და გამოიყენება შესაბამისი ცხრილიდან:

"ფერი = "<%=objRec2("PageFontColor")%>"ზომა ="<%=objRec2("FormTitleSize")%>">გმადლობთ ჩვენი სტუმრების წიგნში შესვლისთვის!

"ფერი = "<%=objRec2("PageFontColor")%>"ზომა ="<%=objRec2("PageFontSize")%>"> დააწკაპუნეთ აქ თქვენი ჩანაწერის სანახავად

ახლა, აუცილებლობის შემთხვევაში, გაუგზავნეთ ელ.წერილი მენეჯერს ან ადმინისტრატორს და შეგატყობინებთ სტუმრების წიგნის ახალი პოსტის შესახებ:

<% 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 %>

ახალი მნიშვნელობების შეყვანის ფორმა

ასევე მიზანშეწონილია ჩართოთ პროცედურაში ფორმის ჩვენება, რომელიც ემსახურება ახალი შეტყობინებების დამატებას (გაითვალისწინეთ, რომ ფორმა თავისთავად დახურულია, ანუ მოდული, რომელიც შეიცავს მას, ემსახურება მასზე რეაქციას):

<% Sub ShowForm(Sign) %>

>
"ფერი = "<%=objRec2("PageFontColor")%>"ზომა ="<%=objRec2("FormTitleSize")%>"> დატოვეთ ჩანაწერი ჩვენს სტუმრების წიგნში

">* მიუთითებს ველებს, რომლებიც უნდა დაიმახსოვროთ

colspan=2> "ფერი = "<%=objRec2("PageFontColor")%>"ზომა ="<%=objRec2("PageFontSize")%>"> Თქვენი სახელი: *
"ზომა=30> <% If dictFields(LCase("name")) Then Response.Write "თქვენ უნდა შეიყვანოთ სახელი
"სხვა პასუხი. დაწერე"
"დასრულება თუ %>
colspan=2> "ფერი = "<%=objRec2("PageFontColor")%>"ზომა ="<%=objRec2("PageFontSize")%>"> ელფოსტა:
"ზომა=30>
colspan=2> "ფერი = "<%=objRec2("PageFontColor")%>"ზომა ="<%=objRec2("PageFontSize")%>"> URL:
"ფერი = "<%=objRec2("PageFontColor")%>"ზომა ="<%=objRec2("PageFontSize")%>"> http:// "ზომა=30>
colspan=2> "ფერი = "<%=objRec2("PageFontColor")%>"ზომა ="<%=objRec2("PageFontSize")%>"> ქვეყანა:
"ზომა=30>
"ფერი = "<%=objRec2("PageFontColor")%>"ზომა ="<%=objRec2("PageFontSize")%>"> როგორ აფასებთ ჩვენს საიტს?
"ფერი = "<%=objRec2("PageFontColor")%>"ზომა ="<%=objRec2("PageFontSize")%> ">Თქვენი კომენტარები: *
"color="red" size="-2"><% If dictFields(LCase("message")) Then Response.Write "Вы не ввели сообщение
"სხვა პასუხი. დაწერე"
"დასრულება თუ %>
<% End Sub %>

ამას მოჰყვება ძირითადი ფუნქცია მომხმარებლის შეტყობინებების ფიქსირებული რაოდენობის ჩვენებისთვის (მნიშვნელობა ამოღებული ადმინისტრაციული პარამეტრების ცხრილიდან):

<% 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 შემდეგ iPageCurrent = iPages თუ iPageCurrent< 1 Then iPageCurrent = 1 If iPages = 0 Then Response.Write "Не найденно записей!" Else ObjRec.AbsolutePage = iPageCurrent %>

"ფერი = "<%=objRec2("PageFontColor")%>"ზომა ="<%=objRec2("PageFontSize")%>"> სულ წიგნში <%=TotalRows%>ჩანაწერები <%=iPages%>გვერდ(ებ)ი

<% 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")) %>
"> "ფერი = "<%=objRec2("InfoFontColor")%>"ზომა ="<%=objRec2("InfoFontSize")%>"><%=ObjRec("DateID") %> "> "ფერი = "<%=objRec2("InfoFontColor")%>"ზომა ="<%=objRec2("InfoFontSize")%>">საიტის რეიტინგი: .gif" height="14" width="65">
"> "ფერი = "<%=objRec2("MessageFontColor")%>"ზომა ="<%=objRec2("MessageFontSize")%>"><%=FormatStr(ObjRec("Message"))%>
"> "ფერი = "<%=objRec2("InfoFontColor")%>"ზომა ="<%=objRec2("InfoFontSize")%>"> <% If IsEmpty(Email) or Email=" " then Response.Write Name Else Response.Write "" & დაასახელე ბოლოს თუ %> "> "ფერი = "<%=objRec2("InfoFontColor")%>"ზომა ="<%=objRec2("InfoFontSize")%>"><%=FormatStr(ObjRec("Country")) %> IP:<%= ObjRec("IP") %> "> "ფერი = "<%=objRec2("InfoFontColor")%>"ზომა ="<%=objRec2("InfoFontSize")%>"> <%=Link%>

<% iRecordsShown = iRecordsShown + 1 objRec.MoveNext Loop if iPages >1 შემდეგ %>

"ფერი = "<%=objRec2("PageFontColor")%>"ზომა ="<%=objRec2("PageFontSize")%>"> გვერდები: <% For I = 1 To iPages If I = iPageCurrent Then Response.Write ""&ᲛᲔ&""სხვა პასუხი. დაწერე" "&ᲛᲔ&""დასრულდეს თუ შემდეგი პასუხი. ჩაწერეთ"" Else Response.Write " " End If End If objRec.Close Set objRec = Nothing End Sub %>

ყურადღება მიაქციეთ, როგორ იქმნება და განხორციელდება შემდეგი გვერდის სანახავად ბმული შეტყობინებების ასეთი „ნაწილით“:

პასუხი. დაწერეთ" "&ᲛᲔ&" "

როგორც ხედავთ, მას გადაეცემა გვერდის ნომერი, როგორც გვერდის პარამეტრის მნიშვნელობა და შემდგომში, თუ ეს მნიშვნელობა არ არის 1-ის ტოლი, შეტყობინებების ჩვენება იწყება არა პირველი გზავნილიდან, არამედ იმიდან, რომელიც იყავი პირველი ანგარიშში გვერდზე, პარამეტრში მითითებული შესაბამისი ნომრით:

<% NumPerPage=INT(objRec2("NumPerPage")) If Request.QueryString("page") = "" Then iPageCurrent = 1 Else iPageCurrent = CInt(Request.QueryString("page")) End If %>თავად მოდულის წყაროს კოდი მოჰყვება, რომელშიც ხდება მონაცემთა ბაზასთან კავშირი და აღებულია ჩანაწერები (აღწერილ მაგალითში ეს იქნება ერთადერთი ჩანაწერი) ადმინისტრაციული პარამეტრების ცხრილიდან:<% 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 %>

შემდეგ შეგიძლიათ დააფორმოთ HTML გვერდის სათაური და მთავარი ტეგები:

ASP ვერცხლის ლანგარზე ნაწილი 15 - წვრილმანი სტუმრების წიგნი

"ფერი = "<%=objRec2("PageFontColor")%>"ზომა ="<%=objRec2("PageFontSize")%>">

სტუმრების წიგნის ნახვა | დატოვეთ ჩანაწერი სტუმრების წიგნში

და ბოლოს, მოდულის თქვენი მთავარი და ერთადერთი asp გვერდის დამუშავების მთავარი ციკლი ასე გამოიყურება:

<% 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 და dictFields.Count = 0 შემდეგ დარეკეთ Update Else If Request.Form.Count<>0 შემდეგ End If ShowForm("Sign") დასრულდება თუ case "show" Call Show case სხვა Call Show End აირჩიეთ %>

აქ განიხილება მხოლოდ ორი შემთხვევა (შემთხვევა), რომელიც შეესაბამება ჩვენი ვებ აპლიკაციის ორ ფუნქციას: სტუმრების წიგნში ახალი ჩანაწერის დამატება (რეჟის პარამეტრის მნიშვნელობა = „პოსტი“) და სტუმრების წიგნის შეტყობინებების ნახვა (რეჟის პარამეტრის მნიშვნელობა = „ჩვენება“) .

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

" %>

დასკვნა

ჩვენ განვიხილეთ საიტის კიდევ ერთი ფუნქციური კომპონენტი და მაშინვე გავხადეთ პორტატული. ამის შედეგი იყო საკმაოდ რთული წყაროს კოდი აღქმის თვალსაზრისით. მიუხედავად იმისა, რომ ადმინისტრაციული ცხრილიდან ამოღებული პარამეტრების დიდი რაოდენობა გარკვეულწილად ართულებდა მოდულის საწყისი კოდის გაგებას, მათი ერთხელ და სამუდამოდ გამოყენება გიხსნით კოდის რედაქტირების საჭიროებისგან მათი შეცვლისას. ჩვენს მიერ შემუშავებული სისტემა საკმაოდ მისაღებია გამოყენებაში და მისი განხორციელების მოდულურობისა და სტატიაში აღწერილ არსებულ საიტებზე მისი განხორციელების მიდგომის წყალობით, ის შეიძლება გამოყენებულ იქნას როგორც სტუმრების წიგნი თითქმის ნებისმიერი სირთულის საიტზე. .

რა თქმა უნდა, გასათვალისწინებელია ადმინისტრაციული პარამეტრების (სქემების) რედაქტირების, დამატებისა და წაშლის ვებ ინტერფეისი, მაგრამ ამას დიდი დრო დასჭირდება და, შესაბამისად, ავტორი შეეცდება მის გაშუქებას ამ სტატიის ერთ-ერთ შემდეგ ნაწილში.

ComputerPress 11 "2001წ

კონტროლის რეგისტრაცია ხორციელდება @Register დირექტივით, რომელიც საშუალებას გაძლევთ გამოიყენოთ მომხმარებლის კონტროლი და სერვერის კონტროლი გვერდის HTML კოდში სპეციალური სინტაქსის გამოყენებით (დეკლარაციული საბაჟო სერვერის კონტროლის სინტაქსი). ამ დირექტივების ანალიზის საფუძველზე, გვერდის პარსერს შეუძლია დააკავშიროს ტეგები მოცემულ ტიპებთან და, გვერდის შექმნისას, ჩადოს კონტროლი უკვე მორგებული ტიპის კონტეინერებად - გვერდის საკონტროლო ხის ტოტები.

დირექტივები წინ უნდა უსწრებდეს დეკლარირებული ტეგების პირველ გამოყენებას, უფრო ხშირად ისინი განთავსებულია გვერდის დასაწყისში და რამდენიმე კონტროლის რეგისტრაციის შემთხვევაში, მოდულარული სტრუქტურის მქონე საიტებზე, ასეთი დეკლარაციების რაოდენობამ შეიძლება დაიკავოს სტრიქონების დიდი რაოდენობა. . კონტროლის ადგილმდებარეობის შეცვლისას, თქვენ უნდა მოძებნოთ ხაზები, რომლებიც საჭიროებენ ცვლილებებს ყველა გვერდის კოდში და მომხმარებლის კონტროლში, რომლებზეც ისინი რეგისტრირებულია, რაც საკმაოდ მოუხერხებელია.

სტატიაში აღწერილია მეთოდი, რომელიც ამარტივებს კონტროლის რეგისტრაციას.

რეგისტრაციის დირექტივებისთვის ჩვენ გამოვიყენებთ უბრალო ტექსტურ ფაილს, რომელშიც შევაგროვებთ @ Register დირექტივებს. ვინაიდან ვირტუალური ბილიკები შეიძლება გამოყენებულ იქნას მომხმარებლის კონტროლის გამოსაცხადებლად და მხოლოდ სახელთა სივრცე მითითებულია სერვერის კონტროლისთვის, ჩვენ შეგვიძლია შევაგროვოთ ყველა ბმული, რომელიც გვჭირდება ამ ფაილში და ascx ფაილების ბმულები სწორი იქნება პროექტის ნებისმიერ საქაღალდეში. აი, როგორ გამოიყურება ეს ფაილი ერთ-ერთ პროექტში:


<%@ 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" %>

მოდით დავასახელოთ ფაილი register.inc და მოვათავსოთ ჩვენი ვებ პროექტის /inc საქაღალდეში.

ეს ფაილი შეიცავს ყველა ჩვენთვის საჭირო ბმულს, ჩვენ დავამატებთ ან შევცვლით მასში მომხმარებლის ან სერვერის კონტროლის რეგისტრაციას.

ახლა შექმნილი ფაილი როგორმე უნდა იყოს შეტანილი გვერდის კოდში. ჩვენ ამას ვაკეთებთ SSI-ით (სერვერის მხარე მოიცავს) #include დირექტივას. ეს დირექტივა გაძლევთ საშუალებას გვერდის კოდში ჩართოთ სტატიკური და დინამიური ფაილები, დაამუშავოთ ისინი IIS რუკების საფუძველზე, ე.ი. asp ან aspx ფაილის წყაროდ მითითება გამოიწვევს ფაილის დამუშავებას შესაბამისი პროცესით და ამ დამუშავების შედეგების კოპირება გამომავალ გვერდზე. ASP-ში #include დირექტივა ძალიან ფართოდ გამოიყენებოდა და საშუალებას აძლევდა საიტის მოდულარიზაციას. ASP.NET-ის მოსვლასთან ერთად, უფრო მოსახერხებელი გახდა ამის გაკეთება სხვა გზებით, მაგალითად, მომხმარებლის კონტროლის გამოყენებით. ASP.NET-ის მომავალი ვერსიები განახორციელებს მოდულარობას სამაგისტრო გვერდების გამოყენებით. ზოგადად, #include დირექტივამ დაკარგა თავისი მნიშვნელობა და შენახული იყო ძირითადად ჩამორჩენილი თავსებადობისა და ASP პროექტების .Net-ზე მიგრაციის გასამარტივებლად.

ვინაიდან ჩვენ გვაქვს მარტივი ტექსტური ფაილი, არანაირი დამუშავება არ განხორციელდება და სანამ რაიმე დინამიური შინაარსი შესრულდება, ფაილის მთლიანი შიგთავსი დაკოპირდება გვერდის კოდში. იმათ. ჩვენი register.inc ფაილის დამატება გვერდის ზედა ნაწილში, მაგალითად, თითქმის იგივეა, რაც იქ ყველა @Register დირექტივის დაწერა.

იმისათვის, რომ არ ვიყოთ დამოკიდებული ფაილის ფიზიკურ მდებარეობაზე, ჩვენ კვლავ ვიყენებთ ვირტუალური ბილიკის სინტაქსს და ვამატებთ შემდეგ ხაზს aspx ფაილის კოდს:

დარწმუნდით, რომ ყველაფერი მუშაობს, თუ არა, შეასწორეთ არასწორი გზები.

რჩება კიდევ ერთი ოპერაციის ჩატარება. ახლა, თუ თქვენ ცდილობთ მიიღოთ /inc/register.inc ფაილი თქვენს ბრაუზერში არსებული ბმულიდან, ამის გაკეთება მარტივად შეგიძლიათ. IIS აყენებს მას თქვენს ხელში, ისევე როგორც თავდამსხმელის ხელში, სრულიად უფასოდ, თუმცა შეიცავს თქვენი საიტის ფიზიკური სტრუქტურის ბილიკებს.

ამის თავიდან ასაცილებლად, ჩვენ ვიყენებთ სინქრონული HttpForbiddenHandler დამმუშავებლის შესაძლებლობებს, რომელიც საშუალებას გვაძლევს დავიცვათ გარკვეული ტიპის ფაილები მომხმარებლის მოთხოვნით გაცემისგან. ეს მიდგომა მოსახერხებელია და ხშირად გამოიყენება, მაგალითად, პროექტში გამოყენებული MS Access მონაცემთა ბაზის ფაილების დასაცავად. იმისათვის, რომ ფაილები *.inc გაფართოებით იყოს დაცული ამ დამმუშავებლის გამოყენებით, თქვენ უნდა აცნობოთ IIS-ს, რომ ეს ფაილები დამუშავდება ASP.NET პროცესით, სხვა სიტყვებით რომ ვთქვათ, დააკონფიგურიროთ IIS ამ ტიპის ფაილებზე რუკაზე.

IIS-ის კონფიგურაციის პროცესის დეტალური აღწერისთვის იხილეთ როგორ: გამოიყენეთ ASP.NET ფაილის ტიპების დასაცავად (http://support.microsoft.com/kb/815152/EN-US/). ჩვენ უნდა შევქმნათ რუკების შექმნა მხოლოდ *.inc ფაილებისთვის. იქ აღწერილი ნაბიჯების დასრულების შემდეგ, ამ გაფართოებით ფაილების ყველა მოთხოვნა დამუშავდება ASP.NET პროცესით და თქვენ მოგიწევთ web.config ფაილის რედაქტირება შემდეგნაირად:

ესე იგი, ახლა, როდესაც ცდილობს /inc/register.inc ფაილის მიღებას პირდაპირი ლინკის საშუალებით, მომხმარებელი მიიღებს შეცდომას B.

იმისათვის, რომ არ დარეგისტრირდეთ aspnet_isapi.dll, მაგალითად, თქვენს პროვაიდერს არ სურს ამის გაკეთება, შეგიძლიათ გამოიყენოთ SSI შესაძლებლობა, მიუთითოთ ნებისმიერი ტიპის ფაილი და მოატყუოთ IIS-ში უკვე ნაგულისხმევად შედგენილი ერთ-ერთი ტიპის გაფართოების გამოყენებით. ფაილისთვის @Register დირექტივებით. ამისთვის მოსახერხებელი იქნება *.cs ან *.vb გაფართოებები. ეს ფაილები შეიცავს წყაროს კოდს და ჩვეულებრივ არ არის კოპირებული სერვერზე. თუ მოულოდნელად დაუშვით შეცდომა და დააკოპირეთ, თქვენ ვერ შეძლებთ მათ მიღებას ბრაუზერის მოთხოვნით - როდესაც ცდილობთ ამის გაკეთებას, მომხმარებელი მიიღებს შეცდომას B. ეს ხდება იმის გამო, რომ IIS-ში რუკების კონფიგურაცია ნაგულისხმევად არის ამ ტიპის ფაილებისთვის და შესაბამისი გაფართოება უკვე რეგისტრირებულია განყოფილებაში machine.config ფაილი. Visual Studio-ში იმისთვის, რომ კომპილერმა არ მოგცეთ შეცდომის შეტყობინება, დააყენეთ გაფართოება, რომელიც არ აინტერესებს: C# პროექტებში ეს არის *.vb, VB პროექტებში - *.cs.
დასკვნა

აღწერილი მეთოდი საშუალებას გაძლევთ დაარეგისტრიროთ კონტროლი ერთ ადგილას მთელი პროექტისთვის. ამ ფაილის შემდგომი მოდიფიკაცია მოითხოვს ნაკლებ ძალისხმევას, ვიდრე ეს ჩვეულებრივი გზით მოგიწევდათ. სცადეთ გამოიყენოთ SSI #include თქვენს მიერ ჩასმული ფაილების შიგნით - ეს საშუალებას გაძლევთ მოაწყოთ ერთგვარი იერარქია და მემკვიდრეობა, რაც შეიძლება მოსახერხებელი იყოს დიდი პროექტებისთვის.

AngularJS-ში დირექტივები მნიშვნელოვან როლს თამაშობს. დირექტივები შეიძლება გამოყენებულ იქნას HTML-ის ახალი ხრიკების სწავლებისთვის და თქვენ შეგიძლიათ შექმნათ თქვენი საკუთარი HTML ტეგები ან ატრიბუტები. დირექტივები ასევე გვეხმარება მარკირების უფრო თავისუფლად შენარჩუნებაში და განსაზღვრავს კოდისა და მარკირების ერთმანეთისგან გამიჯვნის მშვენიერ გზას.

View არის HTML შაბლონი. ნახვა სხვა არაფერია, თუ არა ინფორმაცია, რომლის გადაცემა გსურთ საბოლოო მომხმარებლის ბრაუზერში. ხედს AngularJS-ში ასევე უწოდებენ შედგენილი DOM. View იყენებს დირექტივებს მონაცემების HTML შაბლონით გამოსატანად.

ეს სტატია არის პროექტის თვალთვალის ვებსაიტის IV ნაწილი, რომელიც აგებულია AngularJS და ASP.NET Web API-ში. აქამდე ჩვენ შევქმენით და გვაქვს .

მადლობა გადახედეთ ამ Angular სერიას და გამოასწორეთ შეცდომები.

ჩვენ უკვე ვნახეთ $scope ობიექტი, რომელიც მოდელს აძლევს View-ს. მოდელის კოდი არ არის შერეული HTML კოდთან, რომელსაც ჩვენ ვწერთ ჩვენს ხედებში. პირიქით, მონაცემები გადაინაცვლებს მოდელიდან ხედებზე მონაცემთა სავალდებულო გამონათქვამების გამოყენებით. ამ გზით დეველოპერებს შეუძლიათ მიაღწიონ შეშფოთების გამოყოფას (SoC). იმის გამო, რომ მოდელები დამოუკიდებელნი არიან ხედებისგან, მათი დაკავშირება შესაძლებელია ნებისმიერ ხედთან. მოდელის ეს დაკავშირება ხდება AngularJS დირექტივების დახმარებით.

ჩვენ უკვე ვნახეთ რამდენიმე Angular დირექტივა ჩვენს მსგავს ng-app-ში, რომელიც ჩატვირთავს AngularJS-ს, ასევე ng-კონტროლერს, რომელიც კონტროლერს HTML-ისთვის ხელმისაწვდომს ხდის. კონტროლერიდან ჩვენ შეგვიძლია დავაკავშიროთ მონაცემები ხედებთან Angular ((გამოხატვა)) გამოყენებით.

ამ სტატიაში ჩვენ გადავხედავთ რამდენიმე დამატებით AngularJS დირექტივას, რომლებიც გამოდის Angular-თან ერთად. ერთ-ერთი მათგანია ng-გამეორება. შევეცადოთ გამოვიყენოთ ng-repeat დირექტივა ჩვენს EmployeeDetails.html გვერდზე, რომელიც შეგიძლიათ იხილოთ თანმხლებ სტატიაში. შეცვალეთ სერვისის URL ჩვენს EmployeesController.js ფაილში. სერვისის URL არის შემდეგი:

http://localhost:2464/api/ptemployees

ახლა ჩვენ შევცვლით EmployeeDetails.html გვერდს, როგორც ნაჩვენებია შემდეგ კოდში -

((emp.employeeID)) ((emp.employeeName)) ((ემტ. აღნიშვნა)) ((emp.contactNo)) ((emp.eMailID)) ((emp.skillSets))

შეცვალეთ EmployeeDetails.html გვერდის ზემოთ კოდით. ზემოთ მოყვანილი კოდის გამომავალი ნაჩვენებია აქ:

ამ კოდში ჩვენ გამოვიყენეთ AngularJS-ის ng-repeat დირექტივა. ის მსგავსია for ან foreach მარყუჟის .NET-ში. აქ ჩვენ ვიღებთ IEnumerable-ს კოლექცია ASP.NET Web API-ის გამოყენებით. ჩვენ ვიყენებთ ამ კოლექციას, როგორც მოდელს ჩვენს Angular Controller-ში. ამ მოდელის გამოყენებით, ჩვენ ვიმეორებთ თანამშრომლების ობიექტებს ჩვენს თვალწინ. ეს არის ძალიან გამოსადეგი დირექტივა, რომელიც მეორდება კოლექციის ობიექტების მეშვეობით, რათა აჩვენოს მონაცემები ხედზე.

ახლა მოდით ვცადოთ ფილტრის დამატება კოლექციიდან კონკრეტული თანამშრომლის მოსაძიებლად და თანამშრომლის ჩვენება მოცემული თანამშრომლის სახელის ან თანამშრომლის სახელის მიხედვით. ამ დრომდე, ჩვენ მოვიყვანეთ მოდელი და ვიყენებდით ჩვენს ხედებში. ის ასევე მუშაობს სხვაგვარად. ჩვენ შეგვიძლია დავაბრუნოთ ჩვენი შეხედულებები ჩვენს მოდელებზე, რომლებიც ჩვენს კონტროლერებშია.

თანამშრომლის სახელზე დაფუძნებული საძიებო ფილტრის დასამატებლად, ჩვენ შევცვლით EmployeeDetails.html გვერდს HTML შეყვანის ელემენტების დამატებით, როგორც ნაჩვენებია ქვემოთ -

შეიყვანეთ თანამშრომლის სახელი ან პერსონაჟი საძიებლად -

დაამატეთ ზემოთ მოცემული კოდი მხოლოდ ამის შემდეგ

ტეგი. ზემოთ მოცემულ კოდში ჩვენ ვიყენებთ ng-model დირექტივას, რომელიც საშუალებას გვაძლევს გავაგზავნოთ მონაცემები მოდელზე. ამ მონაცემების საფუძველზე ჩვენ მოვახდენთ თანამშრომლის ძიებას EmployeeName თვისების გამოყენებით. დარწმუნდით, რომ EmployeeName თვისება დეკლარირებულია ჩვენს მოდელში, რასაც ჩვენ გავაკეთებთ შემდეგ ნაბიჯებში. ასევე გაითვალისწინეთ, რომ ჩვენ ვიყენებთ ng-წარადგინოსდირექტივა, რომელიც მოუწოდებს ძიება თანამშრომელიფუნქცია ჩვენი კონტროლერისგან.

ახლა მოდით შევცვალოთ EmployeesController.js ფაილი ისე, რომ ჩვენ შეგვიძლია მოვძებნოთ თანამშრომელი EmployeeName თვისების საფუძველზე, როგორც ძიების კრიტერიუმი. კოდი ნაჩვენებია ქვემოთ -

(ფუნქცია () ( var EmployeesController = ფუნქცია ($scope,$http) ( var თანამშრომლები = ფუნქცია (serviceResp) ( $scope.Employees = serviceResp.data; ); $scope.SearchEmployees = ფუნქცია (EmployeeName) ( $http.get ("http://localhost:2464/api/ptemployees/" + EmployeeName) .then(employees, errorDetails); ); var errorDetails = ფუნქცია (serviceResp) ($scope.Error="რაღაც შეცდა ??"; ) ;$http.get("http://localhost:2464/api/ptemployees") .then(employees,errorDetails); $scope.Title = "(!LANG:თანამშრომლის დეტალების გვერდი"; $scope.EmployeeName = null; }; app.controller("EmployeesController", EmployeesController); }()); !}

ზემოთ მოცემულ კოდში ჩვენ დავამატეთ SearchEmployee() მეთოდი ჩვენს $scope ობიექტს, როგორც მოდელი. ეს მეთოდი მოიძიებს თანამშრომლებს თანამშრომლის სახელის ან თანამშრომლის სახელის ხასიათის მიხედვით. ჩვენც გამოვაცხადეთ Თანამშრომელთა სახელიქონება ჩვენს კონტროლერში ამ კოდის ბოლოს. SearchEmployees მეთოდი იღებს Web API მეთოდს. მე შევცვალე GET მეთოდი, როგორც ეს ნაჩვენებია აქ:

საჯარო HttpResponseMessage Get(string name) ( var თანამშრომლები = EmployeesRepository.SearchEmployeesByName(სახელი); HttpResponseMessage პასუხი = Request.CreateResponse(HttpStatusCode.OK, თანამშრომლები); პასუხის დაბრუნება; )

თანამშრომელთა საცავის კოდი ნაჩვენებია აქ:

საჯარო სტატიკური სია SearchEmployeesByName(string staffName) ( ProjectTrackingDBEntities dataContext = new ProjectTrackingDBEntities(); var query = თანამშრომლისგან dataContext.Employees where working.EmployeeName.Contains(employeeName) აირჩიეთ თანამშრომელი; დააბრუნეთ შეკითხვა.

ყველა ამ ცვლილების შემდეგ, ახლა გაუშვით EmployeeDetails.html გვერდი და ნახეთ გამომავალი.

ზემოაღნიშნულ გამომავალში ჩვენ ვეძებთ თანამშრომლებს, რომელთა სახელი შეიცავს "J" სიმბოლოს.

AngularJS ფილტრებიგააფართოვოს სავალდებულო გამონათქვამების ან დირექტივების ქცევა. ფილტრები გამოიყენება სავალდებულო გამონათქვამებთან ერთად შეკრული მონაცემების ფორმატირებისთვის. როდესაც ისინი გამოიყენება დირექტივებთან ერთად, ისინი ამატებენ დამატებით მოქმედებებს დირექტივებს. გარედან, AngularJS გთავაზობთ უამრავ ფილტრს, რომელიც შეგვიძლია გამოვიყენოთ გამონათქვამის მნიშვნელობების დასაფორმებლად და მნიშვნელობების/მონაცემების ჩვენებაზე ჩვენს ხედებში. შეგიძლიათ გამოიყენოთ ფილტრები ხედებში, კონტროლერებსა და სერვისებში. ფილტრების გამოყენების სინტაქსი ხედებში არის ((გამოთქმა | filter1 | filter2 | ...)).

ჩვენ ახლა შევეცდებით ფილტრს, რომელიც დაალაგებს მონაცემებს თანამშრომლის სახელის გამოყენებით. მონაცემთა დასალაგებლად, მოდით დავამატოთ ფილტრი ჩვენს ng-repeat-ში | ოპერატორი, როგორც ნაჩვენებია აქ:

ზემოთ მოცემულ კოდში ჩვენ ვამატებთ ფილტრს ჩვენს ng-repeat დირექტივაში. orderBy:'employeeName' დაალაგებს მონაცემებს Employee name-ის გამოყენებით ზრდადი თანმიმდევრობით. გამომავალს შეგიძლიათ დააკვირდეთ აქ:

მონაცემების კლებადობით საჩვენებლად, შეგიძლიათ შეცვალოთ ფილტრი, როგორც ეს ნაჩვენებია აქ:

ზემოთ მოცემულ კოდში, თანამშრომლების სახელების კლებადობით დასალაგებლად, ჩვენ გამოვიყენეთ (-) მინუს ნიშანი. ანალოგიურად, შეგიძლიათ გამოიყენოთ (+) ნიშანი მისი აღმავალში დასალაგებლად.

თქვენ ასევე შეგიძლიათ გამოიყენოთ limitToფილტრი ჩანაწერების რაოდენობის შესაზღუდად. მაგალითად, ვთქვათ იმ დროს, როდესაც გსურთ აჩვენოთ 5 თანამშრომელი. ჩვენს EmployeeDetails.html გვერდზე ჩანაწერების შეზღუდული რაოდენობის საჩვენებლად, მოდით შევცვალოთ ng-repeat დირექტივა, როგორც ეს ნაჩვენებია აქ-

გამომავალი ნაჩვენებია აქ:

ახლა, თუ თქვენ გაუშვით ProjectDetails.html გვერდი, თარიღი დროთა განმავლობაში გამოჩნდება. შეგიძლიათ გამოიყენოთ თარიღის ფილტრი, როგორც ეს ნაჩვენებია შემდეგ კოდში -

((proj.projectID)) ((proj.projectName)) ((proj.startDate|თარიღი:"მოკლე")) ((proj.endDate|თარიღი:"მოკლე")) ((proj.clientName))

ამ გვერდის გამომავალი არის შემდეგი:

შეგიძლიათ გამოიყენოთ თარიღის სხვადასხვა ფორმატები, როგორიცაა - სრული თარიღი, გრძელი თარიღი, საშუალო თარიღი, მოკლე თარიღი და ა.შ. ახლა გავხსნათ EmployeeDetails.html გვერდი და გავუშვათ იგი. მე ვიყენებ "Z" სიმბოლოს იმ თანამშრომლების საჩვენებლად, რომელთა თანამშრომლის სახელი შეიცავს Z.

თუ დააკვირდებით, გამომავალი აჩვენებს Employee ცხრილის სათაურს მონაცემების გარეშე. ჩვენ შეგვიძლია სათაური გავხადოთ უხილავი ng-show დირექტივის გამოყენებით, როდესაც ფილტრი არ იძლევა რაიმე შედეგს. გამოიყენეთ ng-show დირექტივა ჩვენს ცხრილის ტეგში, როგორც ნაჩვენებია ქვემოთ მოცემულ კოდში და სცადეთ აპლიკაციის გაშვება Z სიმბოლოთი. ახლა თქვენ ვერ ნახავთ ცხრილის სვეტებს, როდესაც Employees მოდელი არის null. ng-show ატრიბუტი შეაფასებს Employees მოდელს და შესაბამისად ან აჩვენებს ცხრილს ან მალავს ცხრილს.

ანალოგიურად, არსებობს მთელი რიგი დირექტივები, რომლებიც შეგიძლიათ გამოიყენოთ AngularJS-ში. თქვენ ასევე შეგიძლიათ შეიმუშაოთ მორგებული დირექტივა, რომელსაც მოგვიანებით ვიხილავთ ამ სერიაში. გამოიყენეთ ძიება სხვადასხვა ხედებზე, თქვენი მოთხოვნის შესაბამისად ჩვენს შეხედულებებში. ჩვენს შემდეგ სტატიაში ჩვენ გადავხედავთ