网址其实就是目录文件的影射。因此只要拆分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>
您当前的位置:<a href="http://www.jb51.net/index.aspx">首页</a> >> <asp:Label runat="server"></asp:Label> <asp:Label 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=":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[] { 'http://www.jb51.net/' }); int len = webUrl.Length - 1;
//层级循环 string strUrl = localUrl + "http://www.jb51.net/"; 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] + "http://www.jb51.net/"); 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栏目";
(编辑:焦作站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|