none
新手学asp.net,关于公共类问题。求解答 RRS feed

  • 问题

  • 以前用asp和php,比如我asp里面喜欢把连接数据库和执行sql的功能封装,放入某个页面,如 conn.asp,然后其他页面要连接数据库,直接 include file 这个conn.asp就可以

    但是asp。net中怎么做?

    我用c#的,环境是 vs2010。

    首先没有app_code这个文件夹。

    然后我自己新建了一个,然后自动生成了一个 namespace 为 myguestbook.app_code这样的,里面有一个 public static修饰的 testadd类,类里有一个方法是 add()

    然后我去根目录新建了一个 list.aspx文件,随便弄了一个button控件双击自动出现一个.cs文件,可是在里面怎么也访问不到  testadd.add() 这个方法,using 不了myguestbook.app_code  ,到底该怎么做呢?求救。。。。。

    我就是想把自己的一些常用功能,比如  数据库连接的方法写入一个公共类,方便每个页面调用

    2012年4月16日 3:35

答案

  • 根據你的描述,我使用了下列程式碼來模擬你的需求,由於ASP.NET有兩種不同類型的專案,一個是Web Site一個是Web Application,不曉得你是使用哪一種?以下示範以Web Application為示範。

    首先我在專案目錄下建立一個名稱為sub的資料夾,接著建立一個叫做testadd的類別。

    testadd.cs的內容如下:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    
    namespace Demo.Sub
    {
        public class testadd
        {
            public List<string> MyList
            {
                get;
                set;
            }
    
            public testadd()
            {
                MyList = new List<string>();
            }
    
            public void Add(string s)
            {
                MyList.Add(s);
            }
        }
    }

    接著我在WebForm4.aspx就可以利用下列程式碼來存取testadd所提供的方法和屬性。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using Demo.Sub;
    
    namespace Demo
    {
        public partial class WebForm4 : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                testadd obj = new testadd();
                obj.Add("123");
                obj.Add("456");
                foreach (string s in obj.MyList)
                {
                    Response.Write(string.Format("{0}<br/>", s));
                }
            }
        }
    }

    在web application專案中建立sub目錄下的類別,因為namespace不同的關係,必須要引用之後才可以存取(using Demo.Sub)。

    否則就必須利用完整名稱,也就是namespace.class的方式來存取,像是下列的程式碼。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    
    namespace Demo
    {
        public partial class WebForm4 : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                Demo.Sub.testadd obj = new Demo.Sub.testadd();
                obj.Add("123");
                obj.Add("456");
                foreach (string s in obj.MyList)
                {
                    Response.Write(string.Format("{0}<br/>", s));
                }
            }
        }
    }


    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/

    2012年4月16日 5:55

全部回复

  • 哎,论坛人气有够冷
    2012年4月16日 3:44
  • 根據你的描述,我使用了下列程式碼來模擬你的需求,由於ASP.NET有兩種不同類型的專案,一個是Web Site一個是Web Application,不曉得你是使用哪一種?以下示範以Web Application為示範。

    首先我在專案目錄下建立一個名稱為sub的資料夾,接著建立一個叫做testadd的類別。

    testadd.cs的內容如下:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    
    namespace Demo.Sub
    {
        public class testadd
        {
            public List<string> MyList
            {
                get;
                set;
            }
    
            public testadd()
            {
                MyList = new List<string>();
            }
    
            public void Add(string s)
            {
                MyList.Add(s);
            }
        }
    }

    接著我在WebForm4.aspx就可以利用下列程式碼來存取testadd所提供的方法和屬性。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using Demo.Sub;
    
    namespace Demo
    {
        public partial class WebForm4 : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                testadd obj = new testadd();
                obj.Add("123");
                obj.Add("456");
                foreach (string s in obj.MyList)
                {
                    Response.Write(string.Format("{0}<br/>", s));
                }
            }
        }
    }

    在web application專案中建立sub目錄下的類別,因為namespace不同的關係,必須要引用之後才可以存取(using Demo.Sub)。

    否則就必須利用完整名稱,也就是namespace.class的方式來存取,像是下列的程式碼。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    
    namespace Demo
    {
        public partial class WebForm4 : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                Demo.Sub.testadd obj = new Demo.Sub.testadd();
                obj.Add("123");
                obj.Add("456");
                foreach (string s in obj.MyList)
                {
                    Response.Write(string.Format("{0}<br/>", s));
                }
            }
        }
    }


    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/

    2012年4月16日 5:55