अतिरिक्त ऑपरेटरों का उपयोग करके शब्दों की खोज करें। डेटाबेस बनाना और तैयार करना

प्रत्येक ASP.NET डेवलपर को पृष्ठ निर्देशों से परिचित होना चाहिए। यदि आप एक नौसिखिया हैं और आप पेज निर्देशों के बारे में सीखना चाहते हैं तो आप इस लेख को पढ़ सकते हैं।

तो पहला सवाल पेज डायरेक्टिव के बारे में है।

पेज निर्देश क्या है?

मूल रूप से पृष्ठ निर्देश आदेश हैं। इन आदेशों का उपयोग संकलक द्वारा पृष्ठ संकलित करते समय किया जाता है।

ASP.NET पृष्ठ में निर्देशों का उपयोग कैसे करें

ASP.NET पृष्ठ पर निर्देश जोड़ना कठिन नहीं है। ASP.NET पृष्ठ पर निर्देश जोड़ना आसान है। आप निम्न प्रारूप में निर्देश लिख सकते हैं:

<%@%>

निर्देश प्रारूप देखें, यह "से शुरू होता है"<%@" and ends with "%>". सबसे अच्छा तरीका है कि आप निर्देश को अपने पृष्ठ के शीर्ष पर रखें। लेकिन आप किसी पृष्ठ में कहीं भी निर्देश डाल सकते हैं। एक और बात, आप एक ही निर्देश में एक से अधिक विशेषताएँ डाल सकते हैं।

यहां निर्देशों की पूरी सूची है:

  • @पृष्ठ
  • @गुरुजी
  • @नियंत्रण
  • @आयात
  • @कार्यान्वयन
  • @पंजीकरण करवाना
  • @सभा
  • @ मास्टर टाइप
  • @आउटपुट कैश
  • @पिछलापेज टाइप
  • @संदर्भ

आइए प्रत्येक निर्देश के बारे में कुछ चर्चा करें।

जब आप ASP.NET पृष्ठ के लिए विशेषताएँ निर्दिष्ट करना चाहते हैं तो आपको @Page निर्देश का उपयोग करने की आवश्यकता है। जैसा कि आप जानते हैं, ASP.NET पृष्ठ ASP.NET का एक बहुत ही महत्वपूर्ण हिस्सा है, इसलिए यह निर्देश आमतौर पर ASP.NET में उपयोग किया जाता है।

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

अब आपके पास @Page Directive के बारे में कुछ जानकारी है। @Master Directive @Page Directive से काफी मिलता-जुलता है। फर्क सिर्फ इतना है कि @मास्टर निर्देश मास्टर पेजों के लिए है। आपको यह नोट करने की आवश्यकता है कि @Master निर्देश का उपयोग करते समय आप टेम्प्लेट पृष्ठ की संपत्ति को परिभाषित करते हैं। फिर कोई भी सामग्री पृष्ठ मास्टर पृष्ठ में परिभाषित सभी गुणों को प्राप्त कर सकता है। लेकिन कुछ गुण ऐसे होते हैं जो केवल एक मास्टर पृष्ठ में उपलब्ध होते हैं।

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

@नियंत्रण

@Control ASP.NET उपयोगकर्ता नियंत्रण बनाता है। जब आप निर्देश का उपयोग करते हैं तो आप उपयोगकर्ता नियंत्रणों द्वारा विरासत में मिली संपत्तियों को परिभाषित करते हैं और शोध मान उपयोगकर्ता नियंत्रण को सौंपे जाते हैं

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

जैसा कि आप जानते हैं कि C# या VB वर्ग का उपयोग करने से पहले आपको अपने .cs वर्ग में नेमस्पेस को परिभाषित करने की आवश्यकता है। तो @Import निर्देश नामस्थान आयात करता है। यह निर्देश केवल एक विशेषता "नेमस्पेस" का समर्थन करता है और यह विशेषता एक स्ट्रिंग मान लेती है जो नामस्थान को आयात करने के लिए निर्दिष्ट करती है। एक बात जो आपको ध्यान देने की आवश्यकता है वह यह है कि @Import निर्देश में एक से अधिक विशेषता/मान युग्म नहीं हो सकते हैं। लेकिन आप कई लाइनों का उपयोग कर सकते हैं।

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

@कार्यान्वयन

@Implements निर्देश .Net फ्रेमवर्क इंटरफेस को लागू करने के लिए ASP.NET पृष्ठ प्राप्त करता है। यह निर्देश केवल एकल विशेषता इंटरफ़ेस का समर्थन करता है।

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

@पंजीकरण करवाना

जब आप उपयोगकर्ता नियंत्रण बनाते हैं और आप उस उपयोगकर्ता नियंत्रण को अपने पृष्ठ पर खींचते हैं तो आपको @Register निर्देश दिखाई देगा। यह निर्देश पृष्ठ पर आपके उपयोगकर्ता नियंत्रण को पंजीकृत करता है ताकि पृष्ठ द्वारा नियंत्रण तक पहुंचा जा सके।

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

@सभा

@Assembly निर्देश पेज या ASP.NET उपयोगकर्ता नियंत्रण से असेंबली को जोड़ता है जिससे सभी असेंबली क्लास और इंटरफेस क्लास के लिए उपलब्ध होते हैं। यह निर्देश दो विशेषताओं नाम और स्रोत का समर्थन करता है। नाम विशेषता असेंबली नाम को परिभाषित करती है और src विशेषता असेंबली के स्रोत को परिभाषित करती है।

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

@ मास्टर टाइप

@MasterType निर्देश दृढ़ता से टाइप किए गए संदर्भ या निर्दिष्ट मास्टर पेज में शामिल सदस्यों को प्राप्त करने के लिए ASP.NET पृष्ठ से एक वर्ग नाम जोड़ता है। यह निर्देश दो विशेषताओं टाइपनाम और वर्चुअलपथ का समर्थन करता है। टाइपनाम व्युत्पन्न वर्ग का नाम सेट करता है जिससे दृढ़ता से टाइप या संदर्भ सदस्यों को प्राप्त किया जा सके और वर्चुअलपाथ उस पृष्ठ का स्थान सेट करता है जहां से इन्हें पुनर्प्राप्त किया जाता है।

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

@आउटपुट कैश

यह ASP.NET पृष्ठ की आउटपुट कैशिंग नीतियों को नियंत्रित करता है।

<%@ OutputCache Duration ="180" VaryByParam="None"%>
@पिछलापृष्ठप्रकार

यह निर्देश उस पृष्ठ को निर्दिष्ट करता है जिससे कोई भी क्रॉस-पेज पोस्टिंग उत्पन्न होती है।

@संदर्भ

यह निर्देश घोषित करता है कि सक्रिय पृष्ठ या नियंत्रण के साथ एक अन्य पृष्ठ या उपयोगकर्ता नियंत्रण चिल्लाहट का अनुपालन किया जाना चाहिए। यह निर्देश एकल विशेषता वर्चुअलपथ का समर्थन करता है। यह उस पृष्ठ या उपयोगकर्ता नियंत्रण का स्थान निर्धारित करता है जिससे सक्रिय पृष्ठ को संदर्भित किया जाएगा।

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

अंतिम शब्द

मुझे आशा है कि आपको यहाँ से कुछ ज्ञान प्राप्त होगा। आपको यह लेख कैसा लगा कमेंट करके जरूर बताएं। आपकी टिप्पणियाँ मेरे लिए बहुत मूल्यवान हैं, क्योंकि केवल आप ही मुझे बताएंगे कि मैं कहाँ गलत हो रहा हूँ और एक बेहतर लेख लिखने के लिए मुझे क्या सुधार करने की आवश्यकता है। कृपया कमेंट करें और अपनी प्रतिक्रिया दें।

अतिथि पुस्तक क्या है?

बेशक, यहां हम सबसे विशिष्ट अतिथि पुस्तक के बारे में बात कर रहे हैं। सबसे पहले, यह एक ऐसी प्रणाली है जो उपयोगकर्ता को पाठ दर्ज करने, किसी विशेष साइट के मूल्यांकन का चयन करने और अपने स्वयं के डेटा (नाम, ई-मेल, http, आदि) को निर्दिष्ट करने की क्षमता प्रदान करती है। यह विभिन्न उपयोगकर्ताओं द्वारा दर्ज किए गए डेटा को नेविगेट करने, संदेशों के लेखकों को ईमेल भेजने की क्षमता के साथ प्रस्तुत करने की एक प्रणाली भी है। विभिन्न सेटिंग्स और मानक शब्दावली के नियंत्रण के साथ भिन्नताएं भी संभव हैं।

हमें क्या जरूरत है

बेशक, यह माना जाता है कि पाठक एएसपी और एसक्यूएल प्रोग्रामिंग की मूल बातें से परिचित है (इस लेख के पहले भागों से परिचित होना इसके लिए काफी पर्याप्त होगा)। इसके अलावा, हमें माइक्रोसॉफ्ट एसक्यूएल सर्वर 7.0 या 2000, कुछ एचटीएमएल या टेक्स्ट एडिटर (मैक्रोमीडिया ड्रीमविवर अल्ट्राडेव 4.0 का उपयोग करने की सलाह देता हूं) और थोड़ा धैर्य चाहिए।

डेटाबेस बनाना और तैयार करना

उपयोगकर्ताओं द्वारा दर्ज किए गए डेटा के भंडारण को व्यवस्थित करने के लिए, आपको एक तालिका की आवश्यकता होती है, जहां आप उपयोगकर्ता का नाम, उसका ईमेल पता, निवास का देश, साइट का पता, आईपी पता, साइट उपयोगकर्ता रेटिंग मान को पांच-बिंदु पैमाने पर संग्रहीत करने के लिए फ़ील्ड बना सकते हैं, आदि।:

सिस्टम को मौजूदा साइटों में आसानी से एकीकृत करने के लिए, रंग और अन्य सेटिंग्स को संग्रहीत करने के लिए एक और तालिका की योजना बनाने की सिफारिश की जाती है। यह आपको गेस्टबुक एप्लिकेशन मॉड्यूल के स्रोत टेक्स्ट में संबंधित मापदंडों को बदले बिना भविष्य में निर्दिष्ट सेटिंग्स को बदलने की अनुमति देगा।

  • डेटा स्रोत ODBC विन्यासकर्ता चलाएँ - प्रारंभ-> सेटिंग्स-> नियंत्रण कक्ष-> प्रशासनिक उपकरण-> डेटा स्रोत ODBC।
  • सिस्टम डीएसएन टैब पर जाएं और Add… पर क्लिक करके एक नया डेटा स्रोत बनाएं।
  • दिखाई देने वाले ड्राइवरों की सूची में, डेटाबेस ड्राइवर - Microsoft SQL सर्वर का चयन करें और अगला क्लिक करें।
  • डेटा स्रोत नाम पंक्ति में, अपने डेटाबेस का नाम निर्दिष्ट करें (वर्णित उदाहरण में, गस्टबुक वह नाम है जिसके द्वारा आप भविष्य में इसका उल्लेख करेंगे)।
  • सर्वर लाइन में, उस सर्वर को निर्दिष्ट करें जिससे कनेक्शन बनाया जाएगा, और अगला क्लिक करें।
  • प्रमाणीकरण मोड का चयन करें SQL सर्वर के साथ…, SQL सर्वर से कनेक्ट करने के लिए उपयोगकर्ता नाम और पासवर्ड सेट करें; सर्वर संचार प्रोटोकॉल (क्लाइंट कॉन्फ़िगरेशन - टीसीपी/आईपी बटन) को परिभाषित करें और दो बार अगला क्लिक करें, फिर समाप्त पर क्लिक करें।
  • आपको की गई कार्रवाइयों के बारे में आंकड़े दिखाई देंगे, और आप डेटा स्रोत की जांच करने के लिए परीक्षण डेटा स्रोत बटन का उपयोग कर सकते हैं।
  • परिणामस्वरूप, आप अपने सिस्टम में डेटा स्रोतों की सूची में एक लाइन देखेंगे।

अब जब डेटाबेस तैयार हो गया है, तो आप सीधे अतिथि पुस्तक बनाने के लिए आगे बढ़ सकते हैं।

एक तैयार वेबसाइट में सिस्टम का एकीकरण

यह स्पष्ट है कि गेस्टबुक का कोई मतलब नहीं है। खुद के लिए जज: जिन्हें पूरी तरह से पाठकों की राय एकत्र करने के लिए डिज़ाइन की गई साइट की आवश्यकता है। आखिरकार, किसी चीज़ के बारे में राय एकत्र करने के लिए, आपको पहले इस चीज़ को उनके निर्णय के लिए प्रस्तुत करना होगा। इसलिए, सिस्टम को तैयार साइटों में एम्बेड करने के सरलीकरण से संबंधित मुद्दों पर विशेष ध्यान देना आवश्यक है।

विशेष रूप से, किसी विशेष साइट की विशिष्ट विशेषताओं के लिए सिस्टम को अनुकूलित करना आसान बनाने के लिए, आपकी साइट के लिए विशिष्ट कुछ मान दर्ज करने के लिए इन सभी प्राथमिकताओं को संग्रहीत करने के लिए एक विशेष तालिका बनाने की अनुशंसा की जाती है (जैसा कि ऊपर बताया गया है) इसे में। इस दृष्टिकोण का स्पष्ट लाभ यह है कि सिस्टम को पहले से तैयार साइट में एम्बेड करने के लिए, आपको मॉड्यूल के स्रोत कोड में परिवर्तन करने की आवश्यकता नहीं है, आपको केवल संबंधित डेटाबेस तालिका में सेटिंग्स को बदलने की आवश्यकता है।

ऐसी तालिका के कार्यान्वयन के उदाहरण की कल्पना करें: .

जैसा कि आप देख सकते हैं, सिस्टम सेटअप मोड तक पहुँचने के लिए नाम और पासवर्ड के बारे में जानकारी संग्रहीत करने के लिए फ़ील्ड हैं, उपयोगकर्ता के संदेश की मुख्य पृष्ठभूमि के रंगों के बारे में, ऊपर और नीचे फ़्रेम (Mid_Color, Top_Color, Bot_Color फ़ील्ड, क्रमशः) , उपयोगकर्ता डेटा (क्रमशः Form_Color और FormTitleSize फ़ील्ड) दर्ज करने के लिए उपयोग किए जाने वाले फ़ॉर्म के हेडर के रंग और आकार के बारे में, संदेश के टेक्स्ट के फ़ॉन्ट के रंग, आकार और शैली के बारे में, सूचना फ़ील्ड, साथ ही साथ गेस्टबुक स्वयं पृष्ठ (फ़ील्ड MessageFontColor, MessageFontSize, MessageFontFace, InfoFontColor, InfoFontSize, InfoFontFace, PageFontColor, PageFontSize और PageFontFace क्रमशः), नए संदेशों की सूचनाओं को स्वचालित रूप से सक्षम करने के लिए फ़ील्ड स्विच करें। प्रबंधक या साइट व्यवस्थापक), जिम्मेदार व्यक्ति के ई-मेल पते को संग्रहीत करने के लिए फ़ील्ड, उपयोगकर्ता द्वारा छोड़े गए संदेश के लिए धन्यवाद के साथ संदेश का पाठ, सूची के साथ अनुमति नहीं है x शब्द और उनके फ़िल्टरिंग मोड के लिए एक स्विच (यदि बाद वाला सक्षम है, तो अमान्य शब्दों की सूची में शब्द स्वचालित रूप से संदेश टेक्स्ट में तारांकन के साथ बदल दिए जाएंगे और इस प्रकार साइट टेक्स्ट की शब्दावली की प्रामाणिकता पर नियंत्रण होगा व्यायाम किया)।

अतिथि पुस्तक एकीकरण प्रणाली के विकास का तात्पर्य उन सभी मापदंडों को निर्धारित करने के लिए एक वेब इंटरफ़ेस के संगठन से है, जिन पर हमने विचार किया है (प्रशासन तालिका के क्षेत्र)।

अपने शुद्ध रूप में पहले से तैयार साइट में सिस्टम का एकीकरण स्रोत पाठ की धारणा में और भविष्य में कुछ कठिनाइयां पैदा कर सकता है, उदाहरण के लिए, आपको किसी विशेष साइट पर अतिथि पुस्तक को अस्थायी रूप से अक्षम करने की आवश्यकता है। इसलिए, हम इस तरह से एक प्रणाली विकसित करने का प्रयास करेंगे कि एक तैयार साइट में इसका एकीकरण मुश्किल नहीं है। ऐसा करने के लिए, सिस्टम का एक स्वतंत्र मॉड्यूल बनाना और जहां आवश्यक हो, इसे मुख्य साइट के पाठ में शामिल करना आवश्यक है। इसलिए, उदाहरण के लिए, आपके वेबसाइट पेज का टेक्स्ट इस तरह दिख सकता है:

चांदी की थाली में एएसपी (भाग - 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), "

    ") स्ट्रिंग 2 = बदलें (स्ट्रिंग, सीएचआर (10),"
    ") अगर objRec2("BadOn") = True तो String2 = ChkBadWords(String2) End if FormatStr = String2 End Function %>

  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. नए संदेश जोड़ने की प्रक्रिया (ध्यान दें कि जिस कंप्यूटर से संदेश भेजा गया था उसका आईपी पता कैसे गणना किया जाता है):
<% 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")%>"> हमारी अतिथि पुस्तक में एक प्रविष्टि छोड़ें

">* उन क्षेत्रों को इंगित करता है जिन्हें याद किया जाना चाहिए

कोलस्पैन=2> "रंग ="<%=objRec2("PageFontColor")%>"आकार ="<%=objRec2("PageFontSize")%>"> तुम्हारा नाम: *
"आकार=30> <% If dictFields(LCase("name")) Then Response.Write "आपको एक नाम दर्ज करना होगा
"अन्य प्रतिक्रिया। लिखें"
"अंत अगर %>
कोलस्पैन=2> "रंग ="<%=objRec2("PageFontColor")%>"आकार ="<%=objRec2("PageFontSize")%>"> ईमेल:
"आकार=30>
कोलस्पैन=2> "रंग ="<%=objRec2("PageFontColor")%>"आकार ="<%=objRec2("PageFontSize")%>"> यूआरएल:
"रंग ="<%=objRec2("PageFontColor")%>"आकार ="<%=objRec2("PageFontSize")%>"> http:// "आकार=30>
कोलस्पैन=2> "रंग ="<%=objRec2("PageFontColor")%>"आकार ="<%=objRec2("PageFontSize")%>"> देश:
"आकार=30>
"रंग ="<%=objRec2("PageFontColor")%>"आकार ="<%=objRec2("PageFontSize")%>"> आप हमारी वेबसाइट को कैसे रेट करते हैं?
"रंग ="<%=objRec2("PageFontColor")%>"आकार ="<%=objRec2("PageFontSize")%> ">आपकी टिप्पणी: *
"रंग = "लाल" आकार = "-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" ऊंचाई = "14" चौड़ाई = "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")) %> आईपी:<%= 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 ""&मैं&""अन्य प्रतिक्रिया। लिखें" "&मैं&""अगर अगली प्रतिक्रिया समाप्त करें। लिखें""अन्य प्रतिक्रिया। लिखें" "अंत यदि समाप्त हो तो objRec.Close सेट objRec = कुछ भी अंत उप%>

संदेशों के ऐसे "भाग" के साथ अगले पृष्ठ को देखने का लिंक कैसे बनता है और कार्यान्वित किया जाता है, इस पर ध्यान दें:

प्रतिक्रिया।लिखें" "&मैं&" "

जैसा कि आप देख सकते हैं, पेज नंबर को पेज पैरामीटर के मान के रूप में पास किया जाता है, और बाद में, यदि यह मान 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 पृष्ठ के शीर्षक और मुख्य टैग को स्टाइल कर सकते हैं:

चांदी की थाली पर एएसपी भाग 15 - DIY अतिथि पुस्तक

"रंग ="<%=objRec2("PageFontColor")%>"आकार ="<%=objRec2("PageFontSize")%>">

अतिथि पुस्तक देखें | अतिथि पुस्तिका में एक प्रविष्टि छोड़ें

और अंत में, मॉड्यूल के आपके मुख्य और एकमात्र एएसपी पृष्ठ को संसाधित करने के लिए मुख्य लूप इस तरह दिखेगा:

<% 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 फिर कॉल अपडेट करें अन्यथा Request.Form.Count<>0 फिर समाप्त करें यदि शोफॉर्म ("साइन") समाप्त होता है यदि मामला "दिखाएं" कॉल शो केस अन्यथा कॉल शो एंड एंड का चयन करें%>

हमारे वेब एप्लिकेशन के दो कार्यों के अनुरूप यहां केवल दो मामलों पर विचार किया गया है: गेस्टबुक में एक नई प्रविष्टि जोड़ना (मोड पैरामीटर का मान = "पोस्ट") और गेस्टबुक संदेश देखना (पैरामीटर मोड का मान = "शो" )

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

" %>

निष्कर्ष

हमने साइट के एक और कार्यात्मक घटक पर विचार किया, और इसे तुरंत पोर्टेबल बना दिया। इसका परिणाम धारणा के संदर्भ में एक जटिल स्रोत कोड था। यद्यपि प्रशासनिक तालिका से प्राप्त पैरामीटरों की एक बड़ी संख्या ने मॉड्यूल के स्रोत कोड को समझना कुछ अधिक कठिन बना दिया है, हालांकि, उनका एक बार और सभी के लिए उपयोग करने से आप कोड को बदलने पर संपादित करने से बच जाएंगे। हमारे द्वारा विकसित प्रणाली उपयोग में काफी स्वीकार्य है, और इसके कार्यान्वयन की मॉड्यूलरिटी और लेख में वर्णित मौजूदा साइटों में इसके कार्यान्वयन के दृष्टिकोण के लिए धन्यवाद, इसे लगभग किसी भी जटिलता की साइट पर अतिथि पुस्तक के रूप में उपयोग किया जा सकता है .

बेशक, प्रशासनिक सेटिंग्स (योजनाओं) को संपादित करने, जोड़ने और हटाने के लिए वेब इंटरफ़ेस पर भी विचार किया जाना चाहिए, लेकिन इसमें बहुत समय लगेगा, और इसलिए लेखक इसे इस लेख के निम्नलिखित भागों में से एक में कवर करने का प्रयास करेंगे।

कंप्यूटरप्रेस 11 "2001

नियंत्रणों का पंजीकरण @Register निर्देश द्वारा किया जाता है, जो आपको एक विशेष सिंटैक्स (घोषणात्मक कस्टम सर्वर नियंत्रण सिंटैक्स) का उपयोग करके पृष्ठ के HTML कोड में उपयोगकर्ता नियंत्रण और सर्वर नियंत्रण का उपयोग करने की अनुमति देता है। इन निर्देशों के विश्लेषण के आधार पर, पेज पार्सर टैग को दिए गए प्रकारों के साथ जोड़ सकता है और, पेज बनाते समय, कस्टम प्रकार के कंटेनर के रूप में पहले से ही नियंत्रण एम्बेड कर सकता है - पेज के कंट्रोल ट्री की शाखाएं।

निर्देशों को घोषित टैग के पहले उपयोग से पहले होना चाहिए, अधिक बार उन्हें पृष्ठ की शुरुआत में रखा जाता है और कई नियंत्रण दर्ज करने के मामले में, मॉड्यूलर संरचना वाली साइटों में, ऐसी घोषणाओं की संख्या बड़ी संख्या में हो सकती है। . जब आप नियंत्रणों का स्थान बदलते हैं, तो आपको उन पंक्तियों की तलाश करनी होती है जिनके लिए सभी पृष्ठों और उपयोगकर्ता नियंत्रणों के कोड में परिवर्तन की आवश्यकता होती है, जो कि असुविधाजनक है।

आलेख एक ऐसी विधि का वर्णन करता है जो नियंत्रणों के पंजीकरण को सरल बनाती है।

पंजीकरण निर्देशों के लिए, हम एक सादा पाठ फ़ाइल का उपयोग करेंगे जिसमें हम सभी @ रजिस्टर निर्देश एकत्र करेंगे। चूंकि वर्चुअल पथ का उपयोग उपयोगकर्ता नियंत्रण घोषित करने के लिए किया जा सकता है, और सर्वर नियंत्रण के लिए केवल नामस्थान निर्दिष्ट किए जाते हैं, हम इस फ़ाइल में आवश्यक सभी लिंक एकत्र कर सकते हैं, और एसीएक्स फाइलों के लिंक प्रोजेक्ट में किसी भी फ़ोल्डर के लिए सही होंगे। यहाँ यह फ़ाइल किसी एक प्रोजेक्ट में कैसी दिखती है:


<%@ 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 में, #include निर्देश का बहुत व्यापक रूप से उपयोग किया गया था और साइट के मॉडर्नाइजेशन के लिए अनुमति दी गई थी। ASP.NET के आगमन के साथ, इसे अन्य तरीकों से करना अधिक सुविधाजनक हो गया है, उदाहरण के लिए, उपयोगकर्ता नियंत्रणों का उपयोग करना। ASP.NET के भविष्य के संस्करण मास्टर पेजों का उपयोग करके प्रतिरूपकता को लागू करेंगे। सामान्य तौर पर, #include निर्देश ने अपना अर्थ खो दिया और मुख्य रूप से पिछड़े संगतता के लिए और ASP परियोजनाओं के .Net पर प्रवास को आसान बनाने के लिए रखा गया था।

चूंकि हमारे पास एक साधारण टेक्स्ट फ़ाइल है, कोई प्रसंस्करण नहीं किया जाएगा, और किसी भी गतिशील सामग्री को निष्पादित करने से पहले, फ़ाइल की पूरी सामग्री को पेज कोड में कॉपी किया जाएगा। वे। उदाहरण के लिए, हमारी register.inc फ़ाइल को पृष्ठ के शीर्ष पर जोड़ना लगभग सभी @Register निर्देशों को लिखने जैसा ही है।

फ़ाइल के भौतिक स्थान पर निर्भर न होने के लिए, हम फिर से वर्चुअल पथ सिंटैक्स का उपयोग करते हैं और निम्न पंक्ति को aspx फ़ाइल कोड में जोड़ते हैं:

सुनिश्चित करें कि सब कुछ काम करता है, यदि नहीं, तो गलत रास्तों को ठीक करें।

एक और ऑपरेशन करना बाकी है। अब, यदि आप अपने ब्राउज़र में लिंक से /inc/register.inc फ़ाइल प्राप्त करने का प्रयास करते हैं, तो आप इसे आसानी से कर सकते हैं। आईआईएस इसे आपके हाथों में देता है, साथ ही एक हमलावर के हाथों में, पूरी तरह से मुक्त, हालांकि इसमें आपकी साइट की भौतिक संरचना के पथ शामिल हैं।

ऐसा होने से रोकने के लिए, हम सिंक्रोनस HttpForbiddenHandler हैंडलर की क्षमताओं का उपयोग करते हैं, जो हमें उपयोगकर्ता के अनुरोध पर एक निश्चित प्रकार की फ़ाइलों को जारी होने से बचाने की अनुमति देता है। यह दृष्टिकोण सुविधाजनक है और अक्सर इसका उपयोग किया जाता है, उदाहरण के लिए, किसी प्रोजेक्ट में उपयोग की जाने वाली एमएस एक्सेस डेटाबेस फ़ाइलों की सुरक्षा के लिए। इस हैंडलर का उपयोग करके *.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 में मैपिंग डिफ़ॉल्ट रूप से कॉन्फ़िगर की जाती है इस प्रकार की फाइलों के लिए और संबंधित एक्सटेंशन पहले से ही अनुभाग में पंजीकृत है मशीन.कॉन्फ़िगरेशन फ़ाइल। विजुअल स्टूडियो में, कंपाइलर आपको त्रुटि संदेश न देने के लिए, एक एक्सटेंशन डालें जिसमें कंपाइलर की दिलचस्पी नहीं है: C# प्रोजेक्ट्स में यह *.vb है, VB प्रोजेक्ट्स में यह *.cs है।
निष्कर्ष

वर्णित विधि आपको संपूर्ण प्रोजेक्ट के लिए एक ही स्थान पर नियंत्रण पंजीकृत करने की अनुमति देती है। इस फ़ाइल के बाद के संशोधन के लिए आपको इसे सामान्य तरीके से करने की तुलना में कम प्रयास की आवश्यकता होती है। आपके द्वारा डाली गई फ़ाइलों के अंदर SSI #include का उपयोग करने का प्रयास करें - यह आपको एक प्रकार का पदानुक्रम और विरासत व्यवस्थित करने की अनुमति देता है, जो बड़ी परियोजनाओं के लिए सुविधाजनक हो सकता है

AngularJS में निर्देश एक महत्वपूर्ण भूमिका निभाते हैं। HTML को नई तरकीबें सिखाने के लिए निर्देशों का उपयोग किया जा सकता है, और आप अपने स्वयं के HTML टैग या विशेषताएँ भी बना सकते हैं। निर्देश मार्क-अप को अधिक धाराप्रवाह रखने में भी मदद करते हैं और कोड और मार्क-अप को एक दूसरे से अलग करने का एक अच्छा तरीका परिभाषित करते हैं।

देखें एक HTML टेम्पलेट है। दृश्य और कुछ नहीं बल्कि वह जानकारी है जिसे आप अंतिम उपयोगकर्ता के ब्राउज़र में प्रस्तुत करना चाहते हैं। AngularJS में एक दृश्य को के रूप में भी कहा जाता है संकलित डोम. HTML टेम्प्लेट के साथ डेटा रेंडर करने के लिए व्यू निर्देशों का उपयोग करता है।

यह लेख AngularJS और ASP.NET वेब एपीआई में निर्मित प्रोजेक्ट ट्रैकिंग वेबसाइट का भाग IV है। अब तक, हमने एक , बनाया और है ।

करने के लिए धन्यवाद इस कोणीय श्रृंखला की समीक्षा करने और बग्स को ठीक करने के लिए।

हम पहले ही $scope ऑब्जेक्ट देख चुके हैं जो दृश्य को एक मॉडल प्रदान करता है। मॉडल कोड उस HTML कोड के साथ मिश्रित नहीं है जिसे हम अपने विचारों में लिखते हैं। बल्कि, डेटा बाइंडिंग एक्सप्रेशन का उपयोग करके डेटा को मॉडल से दृश्य में ले जाया जाता है। इस तरह डेवलपर्स सेपरेशन ऑफ कंसर्न (SoC) हासिल कर सकते हैं। चूंकि मॉडल विचारों से स्वतंत्र होते हैं, इसलिए वे किसी भी दृश्य के लिए बाध्य हो सकते हैं। मॉडल की यह बाइंडिंग एंगुलरजेएस डायरेक्टिव्स की मदद से की जाती है।

हमने अपने जैसे एनजी-ऐप में पहले से ही कुछ कोणीय निर्देश देखे हैं जो एंगुलरजेएस को बूटस्ट्रैप करते हैं, साथ ही एनजी-कंट्रोलर जो नियंत्रक को एचटीएमएल के लिए उपलब्ध कराता है। नियंत्रक से, हम कोणीय ((अभिव्यक्ति)) का उपयोग करके डेटा को विचारों से बांध सकते हैं।

इस लेख में, हम कुछ अतिरिक्त एंगुलरजेएस निर्देशों को देखेंगे जो एंगुलर के साथ आउट-ऑफ-द-बॉक्स आते हैं। उनमें से एक है एनजी-दोहराने. आइए हमारे EmployeeDetails.html पृष्ठ में ng-repeat निर्देश का उपयोग करने का प्रयास करें जो इस आलेख के साथ में पाया जा सकता है। हमारे EmployeesController.js फ़ाइल में सेवा URL को संशोधित करें। सेवा यूआरएल इस प्रकार है:

http://localhost:2464/api/ptemployees

अब हम EmployeeDetails.html पेज को संशोधित करेंगे जैसा कि निम्नलिखित कोड में दिखाया गया है -

((कर्मचारी आईडी)) ((कर्मचारी का नाम)) ((एम्प. पदनाम)) ((emp.contactNo)) ((emp.eMailID)) ((emp.skillSets))

बदलो उपरोक्त कोड के साथ EmployeeDetails.html पृष्ठ का। उपरोक्त कोड का आउटपुट यहां दिखाया गया है:

इस कोड में, हमने AngularJS के ng-repeat निर्देश का उपयोग किया है। यह .NET में for या foreach लूप के समान है। यहाँ हमें एक IEnumerable मिल रहा है ASP.NET वेब एपीआई का उपयोग कर संग्रह। हम इस संग्रह का उपयोग अपने कोणीय नियंत्रक में एक मॉडल के रूप में कर रहे हैं। इस मॉडल का उपयोग करते हुए, हम कर्मचारियों की वस्तुओं को अपने विचार में दोहरा रहे हैं। यह एक बहुत ही उपयोगी निर्देश है जो दृश्य पर डेटा प्रदर्शित करने के लिए संग्रह में वस्तुओं के माध्यम से दोहराता है।

आइए अब संग्रह से किसी विशेष कर्मचारी को खोजने के लिए फ़िल्टर जोड़ने का प्रयास करें और कर्मचारी को दिए गए कर्मचारी नाम या कर्मचारी नाम वर्ण के आधार पर प्रदर्शित करें। अब तक, हमने मॉडल प्राप्त किया है और इसे अपने विचारों में उपयोग किया है। यह दूसरे तरीके से भी काम करता है। हम अपने विचारों को अपने मॉडल पर वापस बात कर सकते हैं जो हमारे नियंत्रकों में हैं।

कर्मचारी नाम के आधार पर एक खोज फ़िल्टर जोड़ने के लिए, हम नीचे दिखाए गए अनुसार HTML इनपुट तत्वों को जोड़कर कर्मचारी विवरण.एचटीएमएल पृष्ठ को संशोधित करेंगे -

खोजने के लिए कर्मचारी का नाम या चरित्र दर्ज करें -

उपरोक्त कोड को इसके ठीक बाद जोड़ें

टैग। उपरोक्त कोड में, हम एनजी-मॉडल निर्देश का उपयोग कर रहे हैं जो हमें डेटा को मॉडल पर वापस भेजने में सक्षम बनाता है। इस डेटा के आधार पर, हम कर्मचारी नाम संपत्ति का उपयोग करके एक कर्मचारी की खोज करेंगे। सुनिश्चित करें कि हमारे मॉडल में कर्मचारी नाम संपत्ति घोषित की गई है, जिसे हम निम्नलिखित चरणों में करेंगे। यह भी ध्यान दें कि हम उपयोग कर रहे हैं एनजी-सबमिटनिर्देश जो एक कॉल देगा कर्मचारी खोजेंहमारे नियंत्रक से समारोह।

आइए अब EmployeesController.js फ़ाइल को संशोधित करें ताकि हम कर्मचारी नाम संपत्ति के आधार पर कर्मचारी को खोज मानदंड के रूप में खोज सकें। कोड नीचे दिखाया गया है -

(फ़ंक्शन () ( var कर्मचारी नियंत्रक = फ़ंक्शन ($ स्कोप, $ http) ( var कर्मचारी = फ़ंक्शन (serviceResp) ($ स्कोप। कर्मचारी = serviceResp.data;); $ स्कोप। खोज कर्मचारी = फ़ंक्शन (कर्मचारी नाम) ($ http.get ("http://localhost:2464/api/ptemployes/" + EmployeeName) .then(कर्मचारी, त्रुटि विवरण); ); var errorDetails = function (serviceResp) ( $scope.Error="कुछ गलत हो गया ??"; ) ;$http.get("http://localhost:2464/api/ptemployees") .then(कर्मचारी, त्रुटि विवरण); $scope.Title = "(!LANG:कर्मचारी विवरण पृष्ठ)"; $scope.EmployeeName = null; }; app.controller("EmployeesController", EmployeesController); }()); !}

उपरोक्त कोड में, हमने अपने $scope ऑब्जेक्ट में एक मॉडल के रूप में SearchEmployee() मेथड को जोड़ा है। यह विधि कर्मचारी के नाम या कर्मचारी के नाम के चरित्र के आधार पर कर्मचारियों की खोज करेगी। हमने भी घोषित किया है कर्मचारी का नामइस कोड के अंत में हमारे नियंत्रक में संपत्ति। SearchEmployees विधि वेब API विधि प्राप्त करती है। जैसा कि यहां दिखाया गया है, मैंने जीईटी विधि को संशोधित किया है:

सार्वजनिक HttpResponseMessage प्राप्त करें (स्ट्रिंग नाम) ( var कर्मचारी = कर्मचारी रिपोजिटरी। SearchEmployeesByName (नाम); HttpResponseMessage प्रतिक्रिया = Request.CreateResponse (HttpStatusCode.OK, कर्मचारी); वापसी प्रतिक्रिया;)

कर्मचारी रिपोजिटरी कोड यहां दिखाया गया है:

सार्वजनिक स्थैतिक सूची SearchEmployeesByName(string EmployeeName) ( ProjectTrackingDBEntities dataContext = new ProjectTrackingDBEntities(); var query = कर्मचारी से dataContext.कर्मचारी जहां कर्मचारी। कर्मचारी नाम शामिल है (कर्मचारी नाम) कर्मचारी का चयन करें; वापसी क्वेरी। ToList (); )

इन सभी परिवर्तनों के बाद, अब EmployeeDetails.html पेज चलाएँ और आउटपुट देखें।

उपरोक्त आउटपुट में, हम उन कर्मचारियों की तलाश कर रहे हैं जिनके नाम में 'J' कैरेक्टर है।

एंगुलरजेएस फिल्टरबाध्यकारी अभिव्यक्तियों या निर्देशों के व्यवहार का विस्तार करें। बाध्य होने वाले डेटा को प्रारूपित करने के लिए बाध्यकारी अभिव्यक्तियों के साथ फ़िल्टर का उपयोग किया जाता है। जब उनका उपयोग निर्देशों के साथ किया जाता है, तो वे निर्देशों में कुछ अतिरिक्त क्रियाएं जोड़ते हैं। आउट-ऑफ-द-बॉक्स, एंगुलरजेएस कई फिल्टर प्रदान करता है जिसका उपयोग हम एक अभिव्यक्ति के मूल्यों को प्रारूपित करने और मूल्यों / डेटा को हमारे विचारों में प्रदर्शित करने के लिए कर सकते हैं। आप दृश्य, नियंत्रक और सेवाओं में फ़िल्टर का उपयोग कर सकते हैं। दृश्यों में फ़िल्टर का उपयोग करने का सिंटैक्स है ((अभिव्यक्ति | फ़िल्टर 1 | फ़िल्टर 2 | ...))।

अब हम एक फ़िल्टर का प्रयास करेंगे जो कर्मचारी के नाम का उपयोग करके डेटा को सॉर्ट करेगा। डेटा को सॉर्ट करने के लिए, हमारे एनजी-रिपीट में एक | . का उपयोग करके एक फ़िल्टर जोड़ें ऑपरेटर जैसा कि यहां दिखाया गया है:

उपरोक्त कोड में, हम अपने एनजी-रिपीट निर्देश में फ़िल्टर जोड़ रहे हैं। ऑर्डरबाय: 'कर्मचारी नाम' कर्मचारी नाम का उपयोग करके डेटा को आरोही क्रम में सॉर्ट करेगा। आप यहां आउटपुट देख सकते हैं:

डेटा को अवरोही क्रम में प्रदर्शित करने के लिए, आप यहां दिखाए गए अनुसार फ़िल्टर बदल सकते हैं:

उपरोक्त कोड में, कर्मचारियों के नामों को अवरोही क्रम में क्रमबद्ध करने के लिए, हमने (-) ऋण चिह्न का उपयोग किया है। इसी तरह, आप इसे आरोही में क्रमबद्ध करने के लिए (+) चिह्न का उपयोग कर सकते हैं।

आप भी उपयोग कर सकते हैं सीमित रखोरिकॉर्ड की संख्या को सीमित करने के लिए फ़िल्टर करें। उदाहरण के लिए, मान लें कि एक बार में आप 5 कर्मचारियों को प्रदर्शित करना चाहते हैं। हमारे EmployeeDetails.html पृष्ठ में रिकॉर्ड की सीमित संख्या प्रदर्शित करने के लिए, आइए ng-repeat निर्देश को संशोधित करें जैसा कि यहां दिखाया गया है-

आउटपुट यहां दिखाया गया है:

अब यदि आप ProjectDetails.html पृष्ठ चलाते हैं, तो समय के साथ दिनांक प्रदर्शित हो रही है। आप निम्न कोड में दिखाए अनुसार दिनांक फ़िल्टर लागू कर सकते हैं -

((प्रोज.प्रोजेक्ट आईडी)) ((प्रोज.प्रोजेक्टनाम)) ((proj.startDate|date:"लघु")) ((proj.endDate|date:"लघु")) ((प्रोज.क्लाइंटनाम))

इस पेज का आउटपुट इस प्रकार है:

आप विभिन्न तिथि प्रारूपों का उपयोग कर सकते हैं जैसे - पूर्ण तिथि, लंबी तिथि, मध्यम तिथि, लघु तिथि आदि। अब EmployeeDetails.html पेज को ओपन करें और रन करें। मैं उन कर्मचारियों को प्रदर्शित करने के लिए 'Z' वर्ण का उपयोग कर रहा हूं जिनके कर्मचारी के नाम में Z है।

यदि आप ध्यान दें, तो आउटपुट डेटा के बिना एक कर्मचारी तालिका शीर्षक प्रदर्शित करता है। जब फ़िल्टर कोई परिणाम नहीं देता है तो हम ng-show निर्देश का उपयोग करके शीर्षक को अदृश्य बना सकते हैं। हमारे टेबल टैग में एनजी-शो निर्देश लागू करें जैसा कि नीचे दिए गए कोड में दिखाया गया है और Z वर्ण के साथ एप्लिकेशन चलाने का प्रयास करें। कर्मचारी मॉडल के रिक्त होने पर अब आपको टेबल कॉलम नहीं दिखाई देंगे। एनजी-शो विशेषता कर्मचारी मॉडल का मूल्यांकन करेगी और तदनुसार यह तालिका प्रदर्शित करेगी या तालिका को छिपाएगी।

इसी तरह, कई निर्देश हैं जिनका उपयोग आप AngularJS में कर सकते हैं। आप एक कस्टम निर्देश भी डिज़ाइन कर सकते हैं जिसे हम इस श्रृंखला में बाद में देखेंगे। हमारे विचारों में अपनी आवश्यकता के अनुसार विभिन्न विचारों पर खोज को लागू करें। हमारे अगले लेख में, हम एक नज़र डालेंगे