网址其实就是目录文件的影射。因此只要拆分URL,并且根据URL的层级关系进行循环,就可以得到当前导航文件的目录。
1、建立数据库表:Navigate
列名 |
数据类型 |
说明 |
id |
int |
|
parentId |
int |
父ID |
root |
int |
层级,0代表根目录,最顶层 |
pathName |
varchar(50) |
(URL)路径名称 |
navName |
varchar(50) |
(栏目)导航名称 |
2、建立用户控件 navigate.ascx ----------------------------------------------------------- <%@ Control Language="C#" AutoEventWireup="true" CodeFile="Navigate.ascx.cs" Inherits="UC_Navigate" %> <div style="display:block;margin-top:5px;margin-left:3px;margin-bottom:5px;">
您当前的位置:<a href="/index.aspx">首页</a> >> <asp:Label ID="lblNavigate" runat="server"></asp:Label> <asp:Label ID="lblTitle" runat="server"></asp:Label>
</div>
3、用户控件的CS后台文件 navigate.ascx.cs ----------------------------------------------------------- using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Data.SqlClient; using System.Configuration; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls;
using Bai51.Data;
public partial class UC_Navigate : System.Web.UI.UserControl { private string localUrl="http://localhost:8085"; private string title; private DataSet ds; private DataTable dt;
protected void Page_Load(object sender, EventArgs e) {
#region -- 获取导航信息表内容(缓存) -- ds=(DataSet)Cache["dsNavigateCache"]; if(ds==null) { ds=SqlComd.CreateSqlDataSet("select * from navigate","dsNavigate"); Cache.Insert("dsNavigateCache",ds,null,System.Web.Caching.Cache.NoAbsoluteExpiration,TimeSpan.FromHours(24)); } dt=ds.Tables[0]; #endregion
#region -- 生成导航信息 -- //分割当前URL地址 string[] webUrl = System.Web.HttpContext.Current.Request.Path.Split(new char[] { '/' }); int len = webUrl.Length - 1;
//层级循环 string strUrl = localUrl + "/"; string strNavigate = ""; string parenId = "0";
for (int i = 1; i < len; i++) { string sql = "root=" + Convert.ToString(i-1) + " and pathName='" + webUrl[i] + "' and parentId=" + parenId; DataRow[] rows = dt.Select(sql);
//循环连接地址 strUrl += (webUrl[i] + "/"); strNavigate += "<a href='" + strUrl + "'>" + rows[0]["navName"].ToString() + "</a>" + " >> ";
//保存父ID parenId = rows[0]["Id"].ToString(); } #endregion
lblNavigate.Text=strNavigate; lblTitle.Text=title ; }
#region --控件属性 -- public string LocalUrl { get{return localUrl;} set{ localUrl=value ;} } public string Title { get { return title; } set { title = value; } } #endregion
}
4、使用方法 ----------------------------------------------------------- 在页面中拖入 Navigate.ascx 用户控件,命名为"navBar"。 在后台代码中写入当前文件的导航名称即可。 navBar.Title = "本页面是XX栏目";
|