菜单的懒惰方法

分享于 

4分钟阅读

Web开发

  繁體

介绍

作为一个懒惰程序员,我总是尝试避免编写更多的代码。 因这里,当我的朋友要求我为他的网站做一个菜单控制时,我想到了这个想法。 为什么不让. NET 找出网站有多少个ASPX页面,然后自动为页面创建链接。 因为菜单是一个垂直菜单菜单显然是一个 DataGrid 可以使用。 我们还有 DirectoryInfo 对象来搜索目录和文件,以及几行工具和几行代码。 菜单上没有什么奇怪的东西,但是很容易让你成为美丽的,自定义你的需求。 演示项目只是一个网站,在不同目录中有一些空页面来演示这个小菜单控件的功能。 要使用该控件,请将菜单拖到你创建的每个页面上。

如果你发现这篇文章有帮助,请做投票,因为这是一个很好的表示,如果我应该。

根据需要,我已经更新了代码以递归工作,所以现在我采取了所有的目录。 我第一次没有做,因为我从来没有在我的项目中使用过两个以上的级别。

// Programmer: Jan Nielsen// Date 07/08/05namespace WebApplication1
{
 using System;
 using System.Data;
 using System.Drawing;
 using System.Web;
 using System.Web.UI.WebControls;
 using System.Web.UI.HtmlControls;
 using System.IO;
 ///<summary>/// Summary description for Menu.///</summary>publicclass Menu : System.Web.UI.UserControl
 {
 protected System.Web.UI.WebControls.DataGrid DataGrid1;
 protected DataTable links = new DataTable("links"); 
 protected DirectoryInfo info;
 privatestaticstring left = "0";
 privatestaticstring top = "0";
 publicstring Left
 {
 set{left = value;}
 get{return left;}
 }
 publicstring Top
 {
 set{top = value;}
 get{return top;}
 }
 privatevoid Page_Load(object sender, System.EventArgs e)
 {
 links.Columns.Add("ButtonText");
 links.Columns.Add("Src");
 info = 
 new DirectoryInfo(Request.PhysicalApplicationPath);
 getDirs(info);
 DataGrid1.DataSource = links;
 DataGrid1.DataBind();
 }
 publicvoid getDirs(DirectoryInfo info)
 {
 foreach(FileInfo i in info.GetFiles("*.aspx"))
 {
 // here we filter out Admin dirif(info.Name!= "Admin") 
 {
 // and here we filter out // Orders.aspx in Secure dirif(i.Name!= "Orders.aspx") 
 {
 string src = i.FullName.Replace(
 info.Root.ToString(),"");
 src = src.Replace(@"","/");
 src = src.Remove(0,src.IndexOf('/'));
 string[] r = new string[2];
 r[0] = i.Name.Split('.')[0];
 r[1] = src;
 links.Rows.Add(r);
 }
 }
 }
 if(info.GetDirectories().Length >0)
 {
 foreach(DirectoryInfo d in info.GetDirectories())
 getDirs(d);
 }
 }
 #region Web Form Designer generated codeoverrideprotectedvoid OnInit(EventArgs e)
 {
 //// CODEGEN: This call is required by // the ASP.NET Web Form Designer.// InitializeComponent();
 base.OnInit(e);
 }
 ///<summary>/// Required method for Designer /// support - do not modify/// the contents of this method /// with the code editor.///</summary>privatevoid InitializeComponent()
 {
 this.Load += 
 new System.EventHandler(this.Page_Load);
 }
 #endregion }
}

菜单  lazy  menus  
相关文章