diff Demo/Asp.Net/Web/Controls/BreadCrumbControl.ascx.cs @ 0:f990fcb411a9

Копия текущей версии из github
author cin
date Thu, 27 Mar 2014 21:46:09 +0400
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Demo/Asp.Net/Web/Controls/BreadCrumbControl.ascx.cs	Thu Mar 27 21:46:09 2014 +0400
@@ -0,0 +1,86 @@
+using System;
+using System.Web.UI.WebControls;
+using System.Web.UI.HtmlControls;
+
+using PetShop.BusinessLogic;
+
+namespace PetShop.Web
+{
+	public partial class BreadCrumbControl : System.Web.UI.UserControl
+	{
+		protected void Page_Load(object sender, EventArgs e)
+		{
+			string categoryId = Request.QueryString["categoryId"];
+
+			if (!string.IsNullOrEmpty(categoryId))
+			{
+				ProcessHomePageLink();
+
+				// Process Product page link
+				//
+				HtmlAnchor lnkProducts = new HtmlAnchor();
+
+				lnkProducts.InnerText = new ProductManager().GetCategory(categoryId).Name;
+				lnkProducts.HRef      = string.Format("~/Products.aspx?page=0&categoryId={0}", categoryId);
+
+				plhControl.Controls.Add(lnkProducts);
+
+				string productId = Request.QueryString["productId"];
+
+				if (!string.IsNullOrEmpty(productId))
+				{
+					// Process Item page link
+					//
+					plhControl.Controls.Add(GetDivider());
+
+					HtmlAnchor lnkItemDetails = new HtmlAnchor();
+
+					lnkItemDetails.InnerText = new ProductManager().GetProduct(productId).Name;
+					lnkItemDetails.HRef      = string.Format("~/Items.aspx?categoryId={0}&productId={1}", categoryId, productId);
+
+					plhControl.Controls.Add(lnkItemDetails);
+				}
+			}
+			else
+			{
+				int len = Request.Url.Segments.Length;
+
+				if (len >= 2 && Request.Url.Segments[len-2].TrimEnd('/', '\\').ToLower() == "admin")
+				{
+					ProcessHomePageLink();
+
+					HtmlAnchor a = new HtmlAnchor();
+
+					a.InnerText = Request.Url.Segments[len - 1].Split('.')[0];
+					a.HRef      = Request.Url.PathAndQuery;
+
+					plhControl.Controls.Add(a);
+				}
+			}
+		}
+
+		private void ProcessHomePageLink()
+		{
+			HtmlAnchor lnkHome = new HtmlAnchor();
+
+			lnkHome.InnerText = "Home";
+			lnkHome.HRef      = "~/Default.aspx";
+
+			plhControl.Controls.Add(lnkHome);
+			plhControl.Controls.Add(GetDivider());
+		}
+
+		/// <summary>
+		/// Create a breadcrumb nodes divider
+		/// </summary>
+		/// <returns>Literal control containing formatted divider</returns>
+		private Literal GetDivider()
+		{
+			Literal ltlDivider = new Literal();
+
+			ltlDivider.Text = "&nbsp;&#062;&nbsp;";
+
+			return ltlDivider;
+		}
+	}
+}
\ No newline at end of file