آموزش ASP.NET

آموزش ASP.NET متفاوت از آنچه جاهای دیگر می بینید!

آموزش ASP.NET

آموزش ASP.NET متفاوت از آنچه جاهای دیگر می بینید!

اضافه کردن لیست دو سطحی از پیوندها در ستون سمت چپ

برای ایجاد این رابط، کدهای زیر را در ستون سمت چپ صفحه Site.master به جای متن TODO: Menu will go here … قرار دهید:

<ul>

<li>

<asp:HyperLink runat="server" ID="lnkHome" NavigateUrl="~/Default.aspx">Home</asp:HyperLink>

</li>

<asp:Repeater runat="server" ID="menu" DataSourceID="SiteMapDataSource1">

<ItemTemplate>

<li>

<asp:HyperLink ID="lnkMenuItem" runat="server" NavigateUrl='<%# Eval("Url") %>'><%# Eval("Title") %></asp:HyperLink>

<asp:Repeater ID="submenu" runat="server" DataSource="<%# ((SiteMapNode) Container.DataItem).ChildNodes %>">

<HeaderTemplate>

<ul>

</HeaderTemplate>

<ItemTemplate>

<li>

<asp:HyperLink ID="lnkMenuItem" runat="server" NavigateUrl='<%# Eval("Url") %>'><%# Eval("Title") %></asp:HyperLink>

</li>

</ItemTemplate>

<FooterTemplate>

</ul>

</FooterTemplate>

</asp:Repeater>

</li>

</ItemTemplate>

</asp:Repeater>

</ul>

<asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" ShowStartingNode="false" />

کدهای بالا، یک کنترل Repeater به نام menu را به یک SiteMapDataSource؛ که سلسله مراتب تعیین شده نقشه سایت در Web.sitemap را برمی‌گرداند؛ متصل می‌کنند. اگر ویژگی ShowStartingNode در SiteMapDataSource برابر False قرار داده شده باشد، فرزندان گره Home را برمی‌گرداند. Repeater هر کدام از این گره‌ها را درون یک عنصر <li> نمایش می‌دهد. Repeater درونی، فرزندان گره جاری را درون یک لیست بدون ترتیب درونی نمایش می‌دهد.

نتیجه کدهای بالا باید مطابق شکل زیر باشد:

 

 

  

 

گام سوم: بروزرسانی Master Page برای نمایش رابط هدایت کاربران

ASP.NET کنترل‌هایی برای طراحی رابط هدایت کاربران دارد. مانند: Menu, TreeView و SiteMapPath. کنترل های Menu و TreeView ساختار نقشه سایت را براساس منو و نمایش درختی ارائه می‌دهند، SiteMapPath به شما نشان می‌دهد که در سلسله مراتب سایت، کجا هستید. داده‌های نقشه سایت می‌تواند توسط کنترل‌های دیگر نیز استفاده شود؛ مانند SiteMapDataSource؛ و می‌توان توسط برنامه‌نویسی به آنها دسترسی داشت.

گام دوم: ایجاد نقشه سایت

همه وب سایت‌ها به جزء بعضی از ساده‌ترین آنها، نیاز به پیاده سازی امکان هدایت کاربران به قسمت‌های مختلف سایت دارند. هدایت کاربران ممکن است با لیستی ساده از پیوندها ایجاد شده باشد. همچنین ممکن است این پیوندها در یک منو یا نمای درختی آرایش داده شده باشند. به عنوان توسعه دهنده صفحات، ایجاد رابط کاربری هدایت کاربران نیمی از داستان است. همچنین، بعضی مواقع نیاز است که تعریف ساختار منطقی سایت در نگهداری و به روز رسانی را تعیین نماییم. به عنوان نمونه، هنگام اضافه کردن یک صفحه جدید و یا حذف یک صفحه موجود، بهتر است که ما فقط یک منبع را ویرایش کنیم و اثر آن روی رابط‌های کاربری هدایت کاربران نمایان شود.

بدین منظور دو کار باید انجام گیرد: تعیین نقشه سایت و ایجاد رابط هدایت کاربران بر پایه نقشه سایت؛ این کار با استفاده از بستر Site Map و کنترل‌های هدایت کاربران بسیار ساده و آسان است. بستر Site Map به توسعه دهندگان اجازه می‌دهد نقشه سایت را تعیین نموده و سپس به وسیله برنامه‌نویسی به آن دسترسی داشته باشند.

همانند بسترهای Membership و Roles بستر Site Map نیز بر پایه مدل تهیه کننده ساخته شده است. وظیفه کلاس تهیه کننده Site Map، تولید ساختار مورد استفاده توسط کلاس SiteMap از محل پایدار نگهداری داده، مانند فایل XML و یا جدول پایگاه داده، است. بستر .NET از تهیه کننده پیش فرض Site Map که داده‌های Site Map را از فایل XML می‌خواند استفاده می‌کند.

تهیه کننده پیش فرض Site Map، به یک فایل XML با فرمت صحیح و با نام Web.sitemap در ریشه سایت نیاز دارد. برای اضافه کردن این فایل بر روی نام پروژه کلیک راست کرده و Add New Item را انتخاب کنید. از کادر محاوره‌ای که نشان داده می‌شود نوع Site Map را انتخاب و آن را Web.sitemap بنامید. 

 

 

 

 

 

فایل XML نقشه سایت، ساختار سایت را بر اساس سلسله مراتبی تعیین می‌کند. Web.sitemap باید با گره پدر <sitemap> شروع شود و فقط یک فرزند <siteMapNode> دارد. عنصر سطح بالای <siteMapNode> نمایشگر ریشه سلسله مراتب است و می‌تواند دارای تعداد دلخواهی گره فرزند باشد. هر عنصر <siteMapNode> باید دارای ویژگی title و به دلخواه دارای ویژگی url و description باشد.

کدهای زیر را در فایل Web.sitemap قرار دهید:

<?xml version="1.0" encoding="utf-8" ?>

<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >

<siteMapNode url="~/Default.aspx" title="Home">

<siteMapNode title="Membership">

<siteMapNode url="~/Membership/CreatingUserAccounts.aspx" title="Creating User Accounts" />

<siteMapNode url="~/Membership/UserBasedAuthorization.aspx" title="User-Based Authorization" />

<siteMapNode url="~/Membership/Guestbook.aspx" title="Storing Additional User Information" />

</siteMapNode>

</siteMapNode>

</siteMap>

سلسله مراتب مشخص شده در کدهای بالا در شکل زیر نشان داده شده است: