Cari kata menggunakan operator tambahan. Membuat dan menyiapkan database

Setiap pengembang ASP.NET harus terbiasa dengan Petunjuk Halaman. Jika Anda seorang pemula dan ingin mempelajari tentang Petunjuk Halaman maka Anda dapat membaca artikel ini.

Jadi pertanyaan pertama adalah tentang Arahan Halaman.

Apa itu Arahan Halaman?

Pada dasarnya Page Directive adalah perintah. Perintah-perintah ini digunakan oleh kompiler ketika halaman dikompilasi.

Cara menggunakan arahan di halaman ASP.NET

Tidak sulit untuk menambahkan arahan ke halaman ASP.NET. Sangat mudah untuk menambahkan arahan ke halaman ASP.NET. Anda dapat menulis arahan dalam format berikut:

<%@%>

Lihat format direktif, dimulai dengan "<%@" and ends with "%>". Cara terbaik adalah meletakkan direktif di bagian atas halaman Anda. Tapi Anda bisa meletakkan direktif di mana saja di halaman. Satu hal lagi, Anda bisa meletakkan lebih dari satu atribut dalam satu direktif.

Berikut adalah daftar lengkap arahan:

  • @Halaman
  • @Menguasai
  • @Kontrol
  • @Impor
  • @Menerapkan
  • @Daftar
  • @Perakitan
  • @MasterType
  • @Cache Keluaran
  • @Jenis Halaman Sebelumnya
  • @Referensi

Mari kita bahas sesuatu tentang setiap arahan.

Saat Anda ingin menentukan atribut untuk halaman ASP.NET maka Anda perlu menggunakan @Page Directive. Seperti yang Anda ketahui, halaman ASP.NET adalah bagian yang sangat penting dari ASP.NET, jadi direktif ini biasanya digunakan di ASP.NET.

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

Sekarang Anda memiliki beberapa informasi tentang @Page Directive. @Master Directive sangat mirip dengan @Page Directive. Satu-satunya perbedaan adalah bahwa arahan @master adalah untuk halaman Master. Perlu diperhatikan bahwa, saat menggunakan @Master Directive, Anda menentukan properti halaman template. Kemudian halaman konten apa pun dapat mewarisi semua properti yang ditentukan di Halaman Master. Tetapi ada beberapa properti yang hanya tersedia di Halaman Master.

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

@Kontrol

@Control membangun kontrol pengguna ASP.NET. Saat Anda menggunakan arahan, Anda menentukan properti yang akan diwarisi oleh kontrol pengguna dan nilai tesis ditetapkan ke kontrol pengguna

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

Seperti yang Anda ketahui, Anda perlu mendefinisikan ruang nama di kelas .cs Anda sebelum menggunakan kelas C# atau VB. Jadi @Import Directive mengimpor ruang nama. Arahan ini hanya mendukung satu atribut "namespace" dan atribut ini mengambil nilai string yang menentukan namespace yang akan diimpor. Satu hal yang perlu Anda perhatikan adalah bahwa @Import Directive tidak boleh berisi lebih dari satu pasangan atribut/nilai. Tetapi Anda dapat menggunakan beberapa baris.

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

@Menerapkan

Arahan @Implements mendapatkan halaman ASP.NET untuk mengimplementasikan antarmuka kerangka kerja .Net. Arahan ini hanya mendukung antarmuka atribut tunggal.

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

@Daftar

Saat Anda membuat kontrol pengguna dan Anda menyeret kontrol pengguna itu ke halaman Anda, maka Anda akan melihat arahan @Register. Arahan ini mendaftarkan kontrol pengguna Anda pada halaman sehingga kontrol dapat diakses oleh halaman.

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

@Perakitan

@Assembly Directive melampirkan rakitan ke halaman atau kontrol pengguna ASP.NET sehingga semua kelas rakitan dan antarmuka tersedia untuk kelas. Arahan ini mendukung dua atribut Name dan src. Atribut Name mendefinisikan nama rakitan dan atribut src mendefinisikan sumber rakitan.

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

@MasterType

@MasterType Directive menghubungkan nama kelas ke halaman ASP.NET untuk mendapatkan referensi yang diketik dengan kuat atau anggota yang terkandung dalam Halaman Master yang ditentukan. Arahan ini mendukung dua atribut Typename dan virtualpath. Typename menetapkan nama kelas turunan dari mana untuk mendapatkan anggota yang diketik atau referensi dengan kuat dan virtualpath mengatur lokasi halaman dari mana ini diambil.

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

@cache keluaran

Ini mengontrol kebijakan caching output dari halaman ASP.NET.

<%@ OutputCache Duration ="180" VaryByParam="None"%>
@jenishalaman sebelumnya

Arahan ini menentukan halaman dari mana setiap posting lintas halaman berasal.

@Referensi

Arahan ini menyatakan bahwa halaman lain atau teriakan kontrol pengguna dipatuhi bersama dengan halaman atau kontrol aktif. Arahan ini mendukung virtualpath atribut tunggal. Ini menetapkan lokasi halaman atau kontrol pengguna dari mana halaman aktif akan direferensikan.

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

Kata-kata Terakhir

Semoga dapat ilmu dari sini. Silakan berkomentar tentang bagaimana Anda menyukai artikel ini. Komentar Anda sangat berharga bagi saya, karena hanya Anda yang akan memberi tahu saya di mana kesalahan saya dan perbaikan apa yang perlu saya lakukan untuk menulis artikel yang lebih baik. Silakan berkomentar dan berikan tanggapan Anda.

Apa itu buku tamu?

Tentu saja, di sini kita berbicara tentang buku tamu paling khas. Pertama-tama, ini adalah sistem yang memberi pengguna kemampuan untuk memasukkan teks, memilih penilaian situs tertentu, dan juga menentukan data mereka sendiri (nama, email, http, dll.). Ini juga merupakan sistem untuk menyajikan data yang dimasukkan oleh berbagai pengguna, dengan kemampuan untuk menavigasi, mengirim email ke penulis pesan. Variasi juga dimungkinkan dengan pengaturan yang berbeda dan dengan kontrol kosakata normatif.

Apa yang kita butuhkan

Tentu saja, diasumsikan bahwa pembaca terbiasa dengan dasar-dasar pemrograman ASP dan SQL (keakraban dengan bagian pertama artikel ini akan cukup untuk ini). Selain itu, kita membutuhkan Microsoft SQL Server 7.0 atau 2000, beberapa HTML atau editor teks (saya sarankan menggunakan Macromedia Dreamweaver UltraDev 4.0) dan sedikit kesabaran.

Membuat dan menyiapkan database

Untuk mengatur penyimpanan data yang dimasukkan oleh pengguna, Anda memerlukan satu tabel tempat Anda dapat membuat bidang untuk menyimpan nama pengguna, alamat emailnya, negara tempat tinggal, alamat situs, alamat IP, nilai peringkat pengguna situs pada skala lima poin, dll.:

Untuk mengintegrasikan sistem dengan mudah ke situs yang ada, disarankan untuk merencanakan tabel lain untuk menyimpan warna dan pengaturan lainnya. Ini akan memungkinkan Anda untuk mengubah pengaturan yang ditentukan di masa mendatang tanpa mengubah parameter yang sesuai dalam teks sumber modul aplikasi buku tamu.

  • Jalankan Data Sources ODBC Configurator - Start->Settings->Control Panel->Administrative Tools->Data Sources ODBC.
  • Buka tab System DSN dan buat sumber data baru dengan mengklik Add…
  • Pada daftar driver yang muncul, pilih driver database - Microsoft SQL Server dan klik Next.
  • Di baris Nama Sumber Data, tentukan nama database Anda (dalam contoh yang dijelaskan, Gustbook adalah nama yang akan Anda rujuk di masa mendatang).
  • Di baris Server, tentukan server tempat koneksi akan dibuat, dan klik Berikutnya.
  • Pilih mode otentikasi Dengan SQL Server…, atur nama pengguna dan kata sandi untuk terhubung ke server SQL; tentukan protokol komunikasi server (Konfigurasi Klien - tombol TCP/IP) dan klik Berikutnya dua kali, lalu klik Selesai.
  • Anda akan melihat statistik tentang tindakan yang diambil, dan Anda dapat menggunakan tombol Uji Sumber Data untuk memeriksa sumber data.
  • Akibatnya, Anda akan melihat baris dalam daftar sumber data di sistem Anda.

Sekarang database sudah siap, Anda dapat melanjutkan langsung ke pembuatan buku tamu.

Integrasi sistem ke dalam situs web yang sudah jadi

Jelas bahwa buku tamu itu sendiri tidak masuk akal. Nilailah sendiri: siapa yang membutuhkan situs yang dirancang semata-mata untuk mengumpulkan pendapat pembaca. Lagi pula, untuk mengumpulkan pendapat tentang sesuatu, Anda harus terlebih dahulu menyajikan sesuatu ini untuk penilaian mereka. Oleh karena itu, perlu memberikan perhatian khusus pada masalah yang terkait dengan penyederhanaan embedding sistem ke situs yang sudah jadi.

Secara khusus, untuk memudahkan penyesuaian sistem untuk fitur karakteristik situs tertentu, disarankan (seperti yang disebutkan di atas) untuk membuat tabel khusus untuk menyimpan semua preferensi ini untuk memasukkan nilai tertentu khusus untuk situs Anda ke dalamnya. Keuntungan nyata dari pendekatan ini adalah bahwa untuk menanamkan sistem ke situs yang sudah selesai, Anda tidak perlu membuat perubahan pada kode sumber modul, Anda hanya perlu mengubah pengaturan di tabel database yang sesuai.

Bayangkan contoh implementasi tabel seperti itu: .

Seperti yang Anda lihat, ada bidang untuk menyimpan informasi tentang nama dan kata sandi untuk mengakses mode pengaturan sistem, tentang warna latar belakang utama pesan pengguna, bingkai atas dan bawah (bidang Mid_Color, Top_Color, Bot_Color, masing-masing) , tentang warna dan ukuran header formulir yang digunakan untuk memasukkan data pengguna (bidang Form_Color dan FormTitleSize, masing-masing), tentang warna, ukuran dan gaya font teks pesan itu sendiri, bidang informasi, serta halaman buku tamu itu sendiri (bidang MessageFontColor, MessageFontSize, MessageFontFace, InfoFontColor, InfoFontSize, InfoFontFace, PageFontColor, PageFontSize dan PageFontFace masing-masing), alihkan bidang untuk mengaktifkan pengiriman otomatis pemberitahuan pesan baru melalui email ke orang yang bertanggung jawab (misalnya, manajer atau administrator situs), bidang untuk menyimpan alamat email orang yang bertanggung jawab, teks pesan dengan ucapan terima kasih atas pesan yang ditinggalkan oleh pengguna, dengan daftar tidak diperbolehkan x kata-kata dan sakelar untuk mode penyaringannya (jika yang terakhir diaktifkan, maka kata-kata dalam daftar kata-kata yang tidak valid akan secara otomatis diganti dalam teks pesan dengan tanda bintang dan dengan demikian kontrol atas norma kosa kata dari teks situs akan menjadi dilaksanakan).

Pengembangan sistem integrasi buku tamu menyiratkan organisasi antarmuka Web untuk mengatur semua parameter yang telah kami pertimbangkan (bidang tabel administrasi).

Integrasi sistem ke situs yang sudah jadi dalam bentuk murni dapat menimbulkan beberapa kesulitan baik dalam persepsi teks sumber dan di masa depan, jika, misalnya, Anda perlu menonaktifkan sementara buku tamu di situs tertentu. Oleh karena itu, kami akan mencoba mengembangkan sistem sedemikian rupa sehingga integrasinya ke dalam situs jadi tidak sulit. Untuk melakukan ini, perlu untuk membentuk modul independen dari sistem dan memasukkannya ke dalam teks situs utama jika perlu. Jadi, misalnya, teks halaman situs web Anda mungkin terlihat seperti ini:

ASP di atas piring perak (Bagian - 15) – Buku Tamu

Seperti yang Anda lihat, dalam kasus pertama, arahan untuk memasukkan halaman dengan buku tamu () ditunjukkan di tempat yang tepat, dan dalam kasus kedua, halaman situs asli disajikan secara sederhana dalam bentuk tiga elemen yang disertakan secara berurutan: awal, halaman buku tamu, dan akhir. Menggunakan ini atau itu cara mengatur struktur halaman situs Anda adalah masalah selera dan tergantung baik pada struktur situs asli dan pada tingkat kerumitannya.

Halaman utama buku tamu (Guest.asp file)

Aplikasi yang disajikan hanya akan memiliki satu halaman, yang akan berfungsi untuk menampilkan pesan pengguna, dan untuk menavigasi dan memasukkan pesan baru. Bergantung pada nilai parameter kunci, satu atau lain tindakan akan dilakukan, dan halaman akan berada dalam satu atau lain keadaan. Pertama-tama, Anda perlu mengembangkan bagian itu, yang akan menampilkan pesan pengguna dan yang akan berisi tautan ke bagian yang berfungsi untuk menambahkan pesan baru.

Pertama, mari kita tulis beberapa fungsi untuk bekerja dengan string:

  1. Fungsi untuk mengganti string kosong dengan spasi dan tanda kutip tunggal dengan tanda kutip ganda:<% Function ChkString(string) If string = "" then string = " " ChkString = Replace(string, """, """") End Function %>
  2. Fungsi memeriksa kosakata teks pesan untuk normativitas. Jika kata-kata cocok dengan kata-kata dari daftar kata-kata yang tidak valid, ganti dengan tanda bintang:<% 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. Fungsi memformat teks yang dimasukkan oleh pengguna. Jika perlu (jika ada tanda yang sesuai dalam database), teks akan diperiksa (difilter) untuk normativitas:<% Function FormatStr(String) on Error resume next String = Server.HTMLEncode(String) String2 = Replace(String, CHR(13), "") String2 = Replace(String, CHR(10) & CHR(10), "

    ") String2 = Ganti(String, CHR(10), "
    ") If objRec2("BadOn") = True maka String2 = ChkBadWords(String2) End if FormatStr = String2 End Function %>

  4. Fungsi pemeriksaan lapangan:<% 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. Prosedur untuk menambahkan pesan baru (perhatikan bagaimana alamat IP komputer tempat pesan dikirim dihitung):
<% 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) %>

Setelah itu, parameter warna, ukuran, font desain diekstraksi dan diterapkan dari tabel yang sesuai:

"warna="<%=objRec2("PageFontColor")%>"ukuran="<%=objRec2("FormTitleSize")%>">Terima kasih atas entri Anda di buku tamu kami!

"warna="<%=objRec2("PageFontColor")%>"ukuran="<%=objRec2("PageFontSize")%>"> Klik di sini untuk melihat entri Anda

Sekarang, kirim email ke manajer atau administrator yang memberi tahu Anda tentang posting buku tamu baru, jika perlu:

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

Formulir untuk memasukkan nilai baru

Juga disarankan untuk terlibat dalam prosedur tampilan formulir yang digunakan untuk menambahkan pesan baru (perhatikan bahwa formulir itu sendiri tertutup, yaitu modul yang berisi itu berfungsi sebagai reaksi terhadapnya):

<% Sub ShowForm(Sign) %>

>
"warna="<%=objRec2("PageFontColor")%>"ukuran="<%=objRec2("FormTitleSize")%>"> Tinggalkan entri di buku tamu kami

">* Menunjukkan bidang yang harus diingat

colspan=2> "warna="<%=objRec2("PageFontColor")%>"ukuran="<%=objRec2("PageFontSize")%>"> Namamu: *
"ukuran=30> <% If dictFields(LCase("name")) Then Response.Write "Anda harus memasukkan nama
" Respon Lain. Tulis "
" Berakhir Jika %>
colspan=2> "warna="<%=objRec2("PageFontColor")%>"ukuran="<%=objRec2("PageFontSize")%>"> Surel:
"ukuran=30>
colspan=2> "warna="<%=objRec2("PageFontColor")%>"ukuran="<%=objRec2("PageFontSize")%>"> URL:
"warna="<%=objRec2("PageFontColor")%>"ukuran="<%=objRec2("PageFontSize")%>"> http:// "ukuran=30>
colspan=2> "warna="<%=objRec2("PageFontColor")%>"ukuran="<%=objRec2("PageFontSize")%>"> Negara:
"ukuran=30>
"warna="<%=objRec2("PageFontColor")%>"ukuran="<%=objRec2("PageFontSize")%>"> Bagaimana Anda menilai situs web kami?
"warna="<%=objRec2("PageFontColor")%>"ukuran="<%=objRec2("PageFontSize")%> ">Komentar Anda: *
"warna="merah" ukuran="-2"><% If dictFields(LCase("message")) Then Response.Write "Вы не ввели сообщение
" Respon Lain. Tulis "
" Berakhir Jika %>
<% End Sub %>

Ini diikuti oleh fungsi utama untuk menampilkan sejumlah pesan pengguna yang tetap (nilai yang diambil dari tabel pengaturan administratif):

<% 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 Kemudian iPageCurrent = iPages Jika iPageCurrent< 1 Then iPageCurrent = 1 If iPages = 0 Then Response.Write "Не найденно записей!" Else ObjRec.AbsolutePage = iPageCurrent %>

"warna="<%=objRec2("PageFontColor")%>"ukuran="<%=objRec2("PageFontSize")%>"> Jumlah dalam buku <%=TotalRows%> entri pada <%=iPages%> halaman

<% 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")) %>
"> "warna="<%=objRec2("InfoFontColor")%>"ukuran="<%=objRec2("InfoFontSize")%>"><%=ObjRec("DateID") %> "> "warna="<%=objRec2("InfoFontColor")%>"ukuran="<%=objRec2("InfoFontSize")%>">Peringkat situs: .gif" height="14" width="65">
"> "warna="<%=objRec2("MessageFontColor")%>"ukuran="<%=objRec2("MessageFontSize")%>"><%=FormatStr(ObjRec("Message"))%>
"> "warna="<%=objRec2("InfoFontColor")%>"ukuran="<%=objRec2("InfoFontSize")%>"> <% If IsEmpty(Email) or Email=" " then Response.Write Name Else Response.Write "" & Nama Akhir Jika %> "> "warna="<%=objRec2("InfoFontColor")%>"ukuran="<%=objRec2("InfoFontSize")%>"><%=FormatStr(ObjRec("Country")) %> AKU P:<%= ObjRec("IP") %> "> "warna="<%=objRec2("InfoFontColor")%>"ukuran="<%=objRec2("InfoFontSize")%>"> <%=Link%>

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

"warna="<%=objRec2("PageFontColor")%>"ukuran="<%=objRec2("PageFontSize")%>"> halaman: <% For I = 1 To iPages If I = iPageCurrent Then Response.Write ""&SAYA&"" Respon Lain. Tulis " "&SAYA&"" Akhiri Jika Respon Selanjutnya. Tulis "" Else Response.Write " " End If End If objRec.Close Set objRec = Nothing End Sub %>

Perhatikan bagaimana tautan untuk melihat halaman berikutnya dengan "porsi" pesan seperti itu dibentuk dan diimplementasikan:

Tanggapan.Tulis" "&SAYA&" "

Seperti yang Anda lihat, nomor halaman diteruskan sebagai nilai parameter halaman, dan selanjutnya, jika nilai ini tidak sama dengan 1, tampilan pesan tidak dimulai dari pesan pertama, tetapi dari pesan yang akan jadilah yang pertama di akun pada halaman dengan nomor yang sesuai yang ditentukan dalam parameter:

<% NumPerPage=INT(objRec2("NumPerPage")) If Request.QueryString("page") = "" Then iPageCurrent = 1 Else iPageCurrent = CInt(Request.QueryString("page")) End If %>Teks sumber modul itu sendiri mengikuti, di mana koneksi ke database dibuat dan catatan diambil (dalam contoh yang dijelaskan, ini akan menjadi satu-satunya catatan) dari tabel pengaturan administratif Admin:<% 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 %>

Kemudian Anda dapat mengatur gaya judul dan tag utama halaman HTML:

ASP di atas piring perak bagian 15 - buku tamu DIY

"warna="<%=objRec2("PageFontColor")%>"ukuran="<%=objRec2("PageFontSize")%>">

Lihat buku tamu | Tinggalkan entri di buku tamu

Dan akhirnya, loop utama untuk memproses halaman utama dan satu-satunya asp Anda dari modul akan terlihat seperti ini:

<% 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 Dan dictFields.Count = 0 Kemudian Panggil Perbarui Lain Jika Request.Form.Count<>0 Kemudian End If ShowForm("Sign") End If case "show" Call Show case Else Call Show End Select %>

Hanya dua kasus yang dipertimbangkan di sini, sesuai dengan dua fungsi aplikasi Web kami: menambahkan entri baru ke buku tamu (nilai parameter mode = “post”) dan melihat pesan buku tamu (nilai parameter mode = “tampilkan” ).

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

" %>

Kesimpulan

Kami mempertimbangkan satu lagi komponen fungsional situs, dan segera menjadikannya portabel. Hasil dari ini adalah kode sumber yang agak rumit dalam hal persepsi. Meskipun sejumlah besar parameter yang diambil dari tabel administratif membuat agak lebih sulit untuk memahami kode sumber modul, namun, menggunakannya sekali dan untuk semua akan menyelamatkan Anda dari keharusan mengedit kode ketika mereka berubah. Sistem yang kami kembangkan cukup dapat diterima untuk digunakan, dan berkat modularitas implementasinya dan pendekatan implementasinya di situs yang ada yang dijelaskan dalam artikel, dapat digunakan sebagai buku tamu di situs dengan hampir semua tingkat kerumitan .

Tentu saja, antarmuka Web untuk mengedit, menambah, dan menghapus pengaturan administratif (skema) juga harus dipertimbangkan, tetapi ini akan memakan banyak waktu, dan oleh karena itu penulis akan mencoba membahasnya di salah satu bagian berikut dari artikel ini.

KomputerTekan 11 "2001

Registrasi kontrol dilakukan oleh arahan @Register, yang memungkinkan Anda untuk menggunakan kontrol pengguna dan kontrol server dalam kode HTML halaman menggunakan sintaks khusus (sintaks kontrol server kustom deklaratif). Berdasarkan analisis arahan ini, pengurai halaman dapat mengaitkan tag dengan jenis tertentu dan, saat membuat halaman, menyematkan kontrol sebagai penampung tipe khusus - cabang dari pohon kontrol halaman.

Arahan harus mendahului penggunaan pertama dari tag yang dideklarasikan, lebih sering ditempatkan di awal halaman dan dalam hal mendaftarkan beberapa kontrol, di situs dengan struktur modular, jumlah deklarasi tersebut dapat menempati banyak baris . Saat Anda mengubah lokasi kontrol, Anda harus mencari baris yang memerlukan perubahan dalam kode semua halaman dan kontrol pengguna tempat mereka terdaftar, yang agak merepotkan.

Artikel ini menjelaskan metode yang menyederhanakan pendaftaran kontrol.

Untuk arahan pendaftaran, kami akan menggunakan file teks biasa di mana kami akan mengumpulkan semua arahan @ Register. Karena jalur virtual dapat digunakan untuk mendeklarasikan kontrol pengguna, dan hanya ruang nama yang ditentukan untuk kontrol server, kami dapat mengumpulkan semua tautan yang kami butuhkan dalam file ini, dan tautan ke file ascx akan benar untuk folder mana pun dalam proyek. Inilah tampilan file ini di salah satu proyek:


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

Beri nama file register.inc dan letakkan di folder /inc proyek web kita.

File ini akan berisi semua link yang kita butuhkan, kita akan menambah atau mengubah pendaftaran pengguna atau kontrol server di dalamnya.

Sekarang file yang dibuat perlu dimasukkan ke dalam kode halaman. Kami melakukan ini dengan SSI (server side include) #include directive. Arahan ini memungkinkan Anda untuk memasukkan file statis dan dinamis dalam kode halaman, memprosesnya berdasarkan pemetaan IIS, mis. menentukan file asp atau aspx sebagai sumber akan menyebabkan file diproses oleh proses yang sesuai dan menyalin hasil pemrosesan ini ke halaman output. Di ASP, arahan #include sangat banyak digunakan dan memungkinkan untuk modularisasi situs. Dengan munculnya ASP.NET, menjadi lebih mudah untuk melakukan ini dengan cara lain, misalnya, menggunakan kontrol pengguna. Versi ASP.NET mendatang akan menerapkan modularitas menggunakan halaman master. Secara umum, #include directive kehilangan artinya dan disimpan terutama untuk kompatibilitas mundur dan untuk menyederhanakan migrasi proyek ASP ke .Net.

Karena kami memiliki file teks sederhana, tidak ada pemrosesan yang akan dilakukan, dan sebelum konten dinamis dijalankan, seluruh konten file akan disalin ke kode halaman. Itu. menambahkan file register.inc kita ke bagian atas halaman, misalnya, hampir sama dengan menulis semua directive @Register di sana.

Agar tidak bergantung pada lokasi fisik file, kita kembali menggunakan sintaks jalur virtual dan menambahkan baris berikut ke kode file aspx:

Pastikan semuanya berfungsi, jika tidak, perbaiki jalur yang salah.

Masih melakukan satu operasi lagi. Sekarang, jika Anda mencoba untuk mendapatkan file /inc/register.inc dari tautan di browser Anda, Anda dapat dengan mudah melakukannya. IIS meletakkannya di tangan Anda, serta di tangan penyerang, sepenuhnya gratis, meskipun berisi jalur struktur fisik situs Anda.

Untuk mencegah hal ini terjadi, kami menggunakan kemampuan penangan HttpForbiddenHandler sinkron, yang memungkinkan kami untuk melindungi file jenis tertentu agar tidak dikeluarkan atas permintaan pengguna. Pendekatan ini nyaman dan sering digunakan, misalnya, untuk melindungi file database MS Access yang digunakan dalam suatu proyek. Agar file dengan ekstensi *.inc dilindungi menggunakan handler ini, Anda perlu memberi tahu IIS bahwa file ini akan diproses oleh proses ASP.NET, dengan kata lain, konfigurasikan IIS untuk dipetakan ke file jenis ini.

Untuk penjelasan rinci tentang proses konfigurasi untuk IIS, lihat CARA: Menggunakan ASP.NET untuk Melindungi Jenis File (http://support.microsoft.com/kb/815152/EN-US/). Kita perlu membuat pemetaan hanya untuk file *.inc. Setelah menyelesaikan langkah-langkah yang dijelaskan di sana, semua permintaan file dengan ekstensi ini akan diproses oleh proses ASP.NET, dan Anda harus mengedit file web.config sebagai berikut:

Itu saja, sekarang ketika mencoba mendapatkan file /inc/register.inc melalui tautan langsung, pengguna akan menerima kesalahan B.

Agar tidak mendaftar aspnet_isapi.dll, misalnya, penyedia Anda tidak ingin melakukan ini, Anda dapat menggunakan kemampuan SSI untuk menentukan file jenis apa pun dan curang dengan menggunakan ekstensi salah satu jenis yang sudah dipetakan di IIS secara default untuk file dengan arahan @Register. *.cs atau *.vb ekstensi akan nyaman untuk ini. File-file ini berisi kode sumber dan biasanya tidak disalin ke server. Jika Anda tiba-tiba membuat kesalahan dan menyalin, Anda tidak akan bisa mendapatkannya atas permintaan dari browser - ketika Anda mencoba melakukan ini, pengguna akan menerima kesalahan B. Ini terjadi karena pemetaan di IIS dikonfigurasi secara default untuk file jenis ini dan ekstensi yang sesuai sudah terdaftar di bagian file mesin.config. Di Visual Studio, agar kompiler tidak memberi Anda pesan kesalahan, letakkan ekstensi yang tidak diminati oleh kompiler: dalam proyek C# adalah *.vb, dalam proyek VB adalah *.cs.
Kesimpulan

Metode yang dijelaskan memungkinkan Anda untuk mendaftarkan kontrol di satu tempat untuk keseluruhan proyek. Modifikasi selanjutnya dari file ini membutuhkan sedikit usaha dibandingkan jika Anda harus melakukannya dengan cara biasa. Coba gunakan SSI #include di dalam file yang Anda masukkan - ini memungkinkan Anda untuk mengatur semacam hierarki dan pewarisan, yang dapat memudahkan proyek besar

Arahan di AngularJS memainkan peran penting. Arahan dapat digunakan untuk mengajarkan trik baru ke HTML, dan Anda bahkan dapat membuat tag atau atribut HTML Anda sendiri. Arahan juga membantu menjaga mark-up lebih lancar dan mendefinisikan cara yang bagus untuk memisahkan kode dan mark-up satu sama lain.

Lihat adalah template HTML. Tampilan tidak lain adalah informasi yang ingin Anda render ke browser pengguna akhir. Tampilan di AngularJS juga disebut sebagai DOM yang dikompilasi. View menggunakan arahan untuk merender data dengan template HTML.

Artikel ini adalah Bagian IV dari Situs Web Pelacakan Proyek yang dibangun di AngularJS dan ASP.NET Web API. Sejauh ini, kami telah , membuat , dan memiliki .

Terimakasih untuk untuk meninjau seri Angular ini dan memperbaiki bug.

Kita telah melihat objek $scope yang menyediakan Model ke View. Kode model tidak bercampur dengan kode HTML yang kita tulis ke dalam pandangan kita. Sebaliknya, data dipindahkan dari model ke tampilan dengan menggunakan ekspresi pengikatan data. Dengan cara ini pengembang dapat mencapai Separation of Concerns (SoC). Karena Model tidak bergantung pada Tampilan, Model dapat diikat ke Tampilan apa pun. Pengikatan model ini dilakukan dengan bantuan Arahan AngularJS.

Kami telah melihat beberapa arahan Angular di aplikasi ng kami yang mem-bootstrap AngularJS, serta ng-controller yang membuat pengontrol tersedia untuk HTML. Dari controller, kita bisa mengikat data ke view menggunakan Angular ((expression)).

Pada artikel ini, kita akan melihat beberapa direktif AngularJS tambahan yang keluar dari kotak dengan Angular. Salah satunya adalah ng-ulangi. Mari kita coba menggunakan direktif ng-repeat ke halaman EmployeeDetails.html kami yang dapat ditemukan di artikel ini. Ubah URL layanan di file EmployeeController.js kami. URL layanan adalah sebagai berikut:

http://localhost:2464/api/ptemployees

Sekarang kita akan memodifikasi halaman EmployeeDetails.html seperti yang ditunjukkan pada kode berikut -

((emp.employeeID)) ((namakaryawan.karyawan)) ((emp. penunjukan)) ((emp.contactNo)) ((emp.eMailID)) ((emp.skillSets))

Ganti dari halaman EmployeeDetails.html dengan kode di atas. Output dari kode di atas ditampilkan di sini:

Dalam kode ini, kami telah menggunakan direktif ng-repeat dari AngularJS. Ini mirip dengan for atau foreach loop di .NET. Di sini kita mendapatkan IEnumerable koleksi menggunakan ASP.NET Web API. Kami menggunakan koleksi ini sebagai model di Angular Controller kami. Dengan menggunakan model ini, kami mengulangi objek karyawan, ke dalam pandangan kami. Ini adalah arahan yang sangat membantu yang berulang melalui objek dalam koleksi untuk menampilkan data pada tampilan.

Sekarang mari kita coba menambahkan filter untuk mencari Karyawan tertentu dari koleksi dan menampilkan karyawan berdasarkan karakter Nama Karyawan atau Nama Karyawan yang diberikan. Sampai sekarang, kami telah mengambil model dan menggunakannya di Tampilan kami. Ini juga bekerja dengan cara lain. Kami dapat membuat pandangan kami berbicara kembali ke model kami yang ada di pengontrol kami.

Untuk menambahkan filter pencarian berdasarkan Nama Karyawan, kami akan memodifikasi halaman EmployeeDetails.html dengan menambahkan elemen input HTML seperti yang ditunjukkan di bawah ini -

Masukkan Nama Karyawan Atau Karakter Untuk Pencarian -

Tambahkan kode di atas tepat setelah

menandai. Dalam kode di atas, kita menggunakan direktif ng-model yang memungkinkan kita mengirim data kembali ke model. Berdasarkan data ini, kami akan melakukan pencarian karyawan menggunakan properti EmployeeName. Pastikan bahwa properti EmployeeName dideklarasikan dalam model kita, yang akan kita lakukan dalam langkah-langkah berikut. Perhatikan juga bahwa kami menggunakan ng-kirim arahan yang akan memanggil CariKaryawan fungsi dari pengontrol kami.

Sekarang mari kita ubah file EmployeeController.js sehingga kita dapat mencari karyawan berdasarkan properti EmployeeName sebagai kriteria pencarian. Kode ditunjukkan di bawah ini -

(fungsi () ( var EmployeeController = function ($scope,$http) ( var employee = function (serviceResp) ( $scope.Employees = serviceResp.data; ); $scope.SearchEmployees = function (EmployeeName) ($http.get ("http://localhost:2464/api/ptemployees/" + EmployeeName) .then(employees, errorDetails); ); var errorDetails = function (serviceResp) ( $scope.Error="Ada yang tidak beres ??"; ) ; $http.get("http://localhost:2464/api/ptemployees") .then(employees,errorDetails); $scope.Title = "(!LANG:Halaman Detail Karyawan"; $scope.EmployeeName = null; }; app.controller("EmployeesController", EmployeesController); }()); !}

Dalam kode di atas, kita telah menambahkan metode SearchEmployee() ke objek $scope kita sebagai model. Metode ini akan mencari Karyawan berdasarkan nama karyawan atau karakter nama karyawan. Kami juga telah menyatakan Nama karyawan properti di controller kami di akhir kode ini. Metode SearchEmployees mengambil metode Web API. Saya telah memodifikasi metode GET seperti yang ditunjukkan di sini:

Dapatkan HttpResponseMessage Publik (nama string) ( var karyawan = EmployeeRepository.SearchEmployeesByName(name); HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK, karyawan); respon balik; )

Kode Repositori Karyawan adalah seperti yang ditunjukkan di sini:

daftar statis publik SearchEmployeesByName(string employeeName) ( ProjectTrackingDBEntities dataContext = new ProjectTrackingDBEntities(); var query = dari karyawan di dataContext.Employees di mana employee.EmployeeName.Contains(employeeName) pilih karyawan; kembali query.ToList(); )

Setelah semua perubahan ini, sekarang jalankan halaman EmployeeDetails.html dan lihat hasilnya.

Pada output di atas, kami mencari karyawan yang namanya mengandung karakter 'J' di dalamnya.

Filter AngularJS memperluas perilaku ekspresi atau arahan yang mengikat. Filter digunakan dengan ekspresi pengikatan untuk memformat data yang diikat. Ketika mereka digunakan dengan arahan, mereka menambahkan beberapa tindakan tambahan ke arahan. Di luar kotak, AngularJS menyediakan sejumlah filter yang dapat kita gunakan untuk memformat nilai ekspresi dan menampilkan nilai/data ke dalam tampilan kita. Anda dapat menggunakan filter di Tampilan, Pengontrol, dan Layanan. Sintaks menggunakan filter ke tampilan adalah (( ekspresi | filter1 | filter2 | ...)).

Kami sekarang akan mencoba filter yang akan mengurutkan data menggunakan nama karyawan. Untuk mengurutkan data, mari tambahkan filter di ng-repeat menggunakan | operator seperti yang ditunjukkan di sini:

Dalam kode di atas, kami menambahkan filter di direktif ng-repeat kami. OrderBy:'employeeName' akan mengurutkan data menggunakan nama Karyawan dalam urutan menaik. Anda dapat mengamati output di sini:

Untuk menampilkan data dalam urutan menurun, Anda dapat mengubah filter seperti yang ditunjukkan di sini:

Pada kode di atas, untuk mengurutkan nama karyawan secara descending, kita menggunakan tanda (-) minus. Demikian juga, Anda dapat menggunakan tanda (+) untuk mengurutkannya secara menaik.

Anda juga dapat menggunakan batasUntuk filter untuk membatasi jumlah record. Misalnya, katakanlah pada suatu waktu Anda ingin menampilkan 5 karyawan. Untuk menampilkan jumlah record yang dibatasi di halaman EmployeeDetails.html, mari ubah direktif ng-repeat seperti yang ditunjukkan di sini-

Outputnya ditampilkan di sini:

Sekarang jika Anda menjalankan halaman ProjectDetails.html, tanggal akan ditampilkan seiring waktu. Anda dapat menerapkan filter tanggal seperti yang ditunjukkan pada kode berikut -

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

Output dari halaman ini adalah sebagai berikut:

Anda dapat menggunakan format tanggal yang berbeda seperti - tanggal penuh, tanggal panjang, tanggal sedang, tanggal pendek, dll. Sekarang mari kita buka halaman EmployeeDetails.html dan jalankan. Saya menggunakan karakter 'Z' untuk menampilkan karyawan yang nama karyawannya mengandung Z.

Jika Anda amati, output menampilkan judul tabel Karyawan tanpa data. Kita dapat membuat heading tidak terlihat menggunakan direktif ng-show ketika filter tidak memberikan hasil apapun. Terapkan direktif ng-show di tag tabel kami seperti yang ditunjukkan pada kode di bawah ini dan coba jalankan aplikasi dengan karakter Z. Sekarang Anda tidak akan melihat kolom tabel saat model Karyawan nol. Atribut ng-show akan mengevaluasi model Karyawan dan karenanya akan menampilkan tabel atau menyembunyikan tabel.

Demikian juga, ada sejumlah arahan yang dapat Anda gunakan di AngularJS. Anda juga dapat merancang Petunjuk Kustom yang akan kita lihat nanti di seri ini. Terapkan pencarian pada berbagai tampilan sesuai kebutuhan Anda dalam tampilan kami. Di artikel kami berikutnya, kami akan membahasnya