Gambar 1: Struktur situs web |
Gambar 2: Menambahkan peta situs baru |
<?xml versi="1.0" pengkodean="utf-8" ?> <siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" > <siteMapNode url="default.aspx" title="Beranda" deskripsi="Situs Web Saya"> <siteMapNode url="~/products/default.aspx" title="Produk"> <siteMapNode url="~/products/product1.aspx" title="Produk Pertama" /> <siteMapNode url="~/products/product2.aspx" title="Produk Kedua" /> </siteMapNode> <siteMapNode url="~/services/default.aspx" title="Layanan"> <siteMapNode url="~/services/service1.aspx" title="Layanan Pertama" /> <siteMapNode url="~/services/service2.aspx" title="Layanan Kedua" /> </siteMapNode> <siteMapNode url="contact.aspx" title="Hubungi Kami" /> </siteMapNode> </Peta Situs> |
deskripsi | properti |
menampilkan | judul halaman. Properti ini sering digunakan oleh kontrol navigasi untuk menampilkan judul URL. |
url | menampilkan URL halaman yang dijelaskan oleh node ini. |
deskripsi | menentukan deskripsi tentang halaman ini. Anda dapat menggunakan deskripsi ini untuk menampilkan konten cepat. |
peran | Dengan menggunakan pemangkasan keamanan (dibahas nanti), atribut ini menentukan peran yang diizinkan untuk mengakses halaman ini. |
Gambar 3: Navigasi Breadcrumb |
Folder | nama formulir web |
Default.aspx | Akar situs web |
Contact.aspx | Akar situs web |
Default.aspx | Produk |
Produk1.aspx | Produk |
Produk2.aspx | Produk |
Default.aspx | Layanan |
Layanan1.aspx | Layanan |
Layanan2.aspx | Layanan |
<%@ Master Language="C#" AutoEventWireup="benar" CodeFile="MasterPage.master.cs" Mewarisi="MasterPage" %> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <judul>Halaman Tanpa Judul</judul> </kepala> <tubuh> <form id="form1" runat="server"> <div> <asp:Label ID="Label1" runat="server" Font-Size="XX-Large" ForeColor="Biru" Text="Selamat Datang!"></asp:Label><br /> <asp:SiteMapPath ID="SiteMapPath1" runat="server" Nama-Font="Verdana" Ukuran-Font="0.8em" PathSeparator=" : "> <PathSeparatorStyle Font-Bold="True" ForeColor="#5D7B9D" /> <CurrentNodeStyle ForeColor="#333333" /> <NodeStyle Font-Bold="True" ForeColor="#7C6F57" /> <RootNodeStyle Font-Bold="Benar" ForeColor="#5D7B9D" /> </asp:JalurPeta Situs> <br /> <br /> <asp:contentplaceholder id="ContentPlaceHolder1" runat="server"> </asp:contentplaceholder> </div> </bentuk> </badan> </html> |
Gambar 4: Contoh menjalankan Default.aspx |
ID HyperLink | Propertiteks Properti | NavigateUrl |
Produk | HyperLink1 | ~/products/default.aspx |
Layanan | HyperLink2 | ~/Services/default.aspx |
HyperLink3 | Hubungi Kami | ~/contact.aspxTabel |
<%@ Halaman Bahasa="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="benar" CodeFile="Default.aspx.cs" Inherits="_Default" Title="Halaman Tanpa Judul" %> <asp:ID Konten="Konten1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server"> <tengah> <tabel> <tr> <td lebar="60%"> <asp:Label ID="Label1" runat="server" Font-Size="X-Besar" Text="Selamat datang di situs Web kami!"></asp:Label></td> </tr> <tr> <td lebar="60%"> <asp:HyperLink ID="HyperLink1" runat="server" Ukuran Font="X-Besar" NavigateUrl="~/Products/Default.aspx">Produk </asp:HyperLink></td> </tr> <tr> <td lebar="60%"> <asp:HyperLink ID="HyperLink2" runat="server" Font-Size="X-Besar" NavigateUrl="~/Services/Default.aspx">Layanan </asp:HyperLink></td> </tr> <tr> <td lebar="60%"> <asp:HyperLink ID="HyperLink3" runat="server" Font-Size="X-Large" NavigateUrl="~/Contact.aspx">Hubungi Kami </asp:HyperLink></td> </tr> </meja> </tengah> </asp:Isi> |
Gambar 5: Halaman default folder Produk |
ID HyperLink | Properti teks Properti | NavigateUrl |
HyperLink1 | Produk Pertama | ~/products/product1.aspx |
HyperLink2 | Produk Kedua | ~/products/product2.aspx |
Gambar 6. Halaman default folder Layanan |
ID HyperLink | Properti teks Properti | NavigateUrl |
HyperLink1 | Layanan Pertama | ~/Services/service1.aspx |
HyperLink2 | Layanan Kedua | ~/Services/service2.aspx |
Atribut teks | nama formulir Web | Label
~/Contact.aspx | Hubungi Kami |
~/Products/Product1.aspx | Detail Produk Pertama |
~/Products/Product2.aspx | Detail Produk Kedua |
~/Services/Service1.aspx | Detail Layanan Pertama |
~/Layanan/Layanan2. aspx | Detail Layanan Kedua |
Gambar 7: Contoh menjalankan Product1.aspx |
Perhatikan bagaimana atribut judul dan URL dari file web.sitemap digunakan untuk menghasilkan "remah roti". Perhatikan juga bagaimana induk ditampilkan bersama dengan judul halaman saat ini. Coba navigasikan ke berbagai halaman dan amati kontrol SiteMapPath.
4. Gunakan kontrol sumber data Peta Situs
Penggunaan peta situs tidak terbatas pada kontrol SiteMapPath. Anda juga dapat melampirkan peta situs ke kontrol yang dapat dinavigasi (seperti TreeView). Dalam contoh berikut, Anda akan menggunakan file peta situs yang sama untuk mengimplementasikan pengikatan ke kontrol TreeView.
Tambahkan formulir Web baru SiteMapDataSourceDemo.aspx ke situs web. Lalu, seret kontrol sumber data SiteMap (SiteMapDataSource1) dan kontrol TreeView (TreeView1) ke formulir. Setel properti DataSourceID dari kontrol TreeView ini ke SiteMapDataSource1. Selain itu, atur properti ShowLines pada kontrol TreeView ke true. Berikut markup lengkap dari halaman SiteMapDataSourceDemo.aspx:
<%@ Halaman Bahasa="C#" AutoEventWireup="benar" CodeFile="SiteMapDataSourceDemo.aspx.cs" Mewarisi="SiteMapDataSourceDemo" %> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <judul>Halaman Tanpa Judul</judul> </kepala> <tubuh> <form id="form1" runat="server"> <asp:TreeView ID="TreeView1" runat="server" DataSourceID="SiteMapDataSource1" ShowLines="Benar"> </asp:Tampilan Pohon> <asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" /> </bentuk> </badan> </html> |
Sekarang, jalankan formulir Web untuk melihat bagaimana struktur navigasi yang sama secara otomatis dihasilkan ke dalam TreeView (lihat Gambar 8).
Gambar 8: Mengikat file peta situs ke kontrol TreeView |
Deskripsi | properti |
ChildNodes | mewakili kumpulan semua node anak dari node saat ini |
HasChildNodes | menunjukkan apakah node peta situs memiliki node anak (benar/salah) |
Judul | mengembalikan nilai atribut title yang ditentukan dalam file peta situs |
Url | kembali dalam file peta situs Nilai atribut url yang ditentukan |
Description | mengembalikan nilai atribut deskripsi yang ditentukan dalam file peta situs |
ParentNode | menunjukkan referensi node peta situs induk dari node saat ini |
dilindungi kekosongan Page_Load (pengirim objek, EventArgs e) { int count = Peta Situs.RootNode.ChildNodes.Count; untuk (int i = 0; i < hitung; i++) { SiteMapNode smNode=Peta Situs.RootNode.ChildNodes[i]; TreeNode tvNode = new TreeNode(smNode.Judul, "", "", smNode.Url, ""); TreeView1.Nodes.Add(tvNode); jika (smNode.HasChildNodes) { int childCount=smNode.ChildNodes.Count; untuk (int j = 0; j < jumlah anak; j++) { SiteMapNode smChildNode = smNode.ChildNodes[j]; TreeNode tvChildNode = TreeNode baru(smChildNode.Judul, "", "", smChildNode.Url, ""); tvNode.ChildNodes.Tambahkan(tvChildNode); } } } } |
Di sini, pertama-tama Anda mendapatkan jumlah total node anak di node akar. Kemudian, Anda mengulang kumpulan ChildNodes dari simpul akar. Pada setiap iterasi, Anda membuat instance baru dari kelas TreeNode dan menentukan judul dan urlnya di konstruktornya. Kemudian, tambahkan TreeNode ini ke koleksi Node TreeView. Kemudian, Anda memeriksa apakah SiteMapNode saat ini memiliki simpul anak. Jika ada, Anda melintasinya dan ulangi proses pembuatan TreeNode. Perhatikan bahwa kali ini Anda menambahkan TreeNodes baru ke koleksi ChildNodes objek TreeNode saat ini.
Perhatikan bahwa Anda menggunakan 2 dalam perulangan karena Anda tahu hanya ada dua tingkat penyarangan. Untuk membuat logika Anda lebih umum, Anda bisa menggunakan rekursi untuk mengisi TreeView.
Jalankan formulir web dan Anda akan melihat sesuatu yang mirip dengan Gambar 8 lagi.
6. Gunakan pemeliharaan keselamatan
Seringkali, situs web menerapkan model keamanan berbasis peran. Misalnya, Anda dapat memiliki peran berbeda dalam aplikasi Anda seperti administrator sistem, penguji produk, dan penguji layanan. Dalam situasi seperti ini, Anda sering kali perlu mengontrol tautan navigasi situs yang ditampilkan kepada pengguna. Misalnya, jika pengguna yang masuk saat ini memiliki peran penguji produk, Anda mungkin ingin hanya menampilkan tautan yang terkait dengan produk dan menyembunyikan tautan lainnya. Salah satu cara untuk menangani peran adalah dengan menggunakan pengkodean tangan, namun hal ini memerlukan penerapan semua logika otorisasi secara terprogram. Untungnya, file peta situs dan kontrol sumber data Peta Situs bersama-sama menyediakan fitur yang disebut pemangkasan keamanan untuk membantu Anda.
Untuk menguji perombakan keamanan, Anda perlu mengaktifkan fitur keanggotaan dan peran situs Anda. Buka file web.config dan tambahkan tag berikut:
<mode autentikasi="Formulir" /> <otorisasi> <menolak pengguna="?"></menolak> </otorisasi> |
<roleManager diaktifkan="benar" /> |
Gambar 9: Menambahkan peran menggunakan alat manajemen situs Web |
Gambar 10: Membuat pengguna menggunakan alat manajemen situs web |
<?xml versi="1.0" pengkodean="utf-8" ?> <siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" > <siteMapNode url="default.aspx" title="Beranda" deskripsi="Situs Web Saya"> <siteMapNode title="Produk" role="Penguji Produk"> <siteMapNode url="~/products/product1.aspx" title="Produk Pertama" /> <siteMapNode url="~/products/product2.aspx" title="Produk Kedua" /> </siteMapNode> <siteMapNode title="Layanan" role="Penguji Layanan"> <siteMapNode url="~/services/service1.aspx" title="Layanan Pertama" /> <siteMapNode url="~/services/service2.aspx" title="Layanan Kedua" /> </siteMapNode> <siteMapNode url="contact.aspx" title="Hubungi Kami" /> </siteMapNode> </Peta Situs> |
<Peta Situs defaultProvider="myprovider" diaktifkan="benar"> <penyedia> <tambahkan nama="penyedia saya" ketik = "Sistem.Web.XmlSiteMapProvider " siteMapFile="SecurityTrimming.peta situs" securityTrimmingEnabled="benar" /> </penyedia> |
Gambar 11: Halaman login |
Gambar 12: Gunakan perbaikan keselamatan |