none
为啥建立网站黏贴下面代码到lei_jichu.aspx.cs.就不出错,建立webapplication后,黏贴到lei_jichu.aspx.cs运行报错 “当前上下文中不存在名称 Label2”呢? RRS feed

  • 问题

  • using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;

    public partial class lei_jichu : System.Web.UI.Page
    {

     

        public partial class SayEventArgs : EventArgs
        {
            public String Username;
            public String Websiteurl;
        }
        public void OnSayEvent(SayEventArgs e)
        {
            //lei_jichu a = new lei_jichu();
            if (SayEvent != null)
            {
                SayEvent(this, e);
            }
        }

        public void Loginsite(String Username, String Websiteurl)
        {
            SayEventArgs e = new SayEventArgs();
            e.Username = Username;
            e.Websiteurl = Websiteurl;

            System.Web.UI.Page page = System.Web.HttpContext.Current.Handler as System.Web.UI.Page;
            if (page != null)
            {
                Label Label1 = page.FindControl("Label1") as Label;
                Label1.Text = e.Username + "<br>";
                Label1.Text += "欢迎你来到<a href=" + e.Websiteurl + ">痞子菜雨夜听风小轩</a>";
            }
            //Label1.Text = e.Username + "<br>";
            // Label1.Text += "欢迎你来到<a href=" + e.Websiteurl + ">痞子菜雨夜听风小轩</a>";
            OnSayEvent(e);
        }
        public delegate void SayEventHandler(object sender, SayEventArgs e);
        public event SayEventHandler SayEvent;
        public class Book//我们还是定义书这个例题吧
        {

           
            //下面我们创建三个私有变量
            string title;       //标题
            int num;            //书的库存
            double price;       //价格

            public delegate void TitleChengHendler();//事先申明一个委托,也可以在类的外部声明委托类型
            public event TitleChengHendler TitleCheng;// 声明一个事件并指定它的委托类型

            public delegate void tmdxu(string a);
            public event tmdxu Numxu;
            //定义两个函数

            public Book()
            {

            }
            public Book(string ntitle, int nnum, double nprice)
            {
                title = ntitle;
                num = nnum;
                price = nprice;
            }
            //下面我们开始定义属性,我们定义了三个可以读写的属性
            public string Title
            {
                get
                { return title; }
                set
                {
                    title = value;
                    TitleCheng();//也就是说,如果通过这里修改了这个标题,就会触发这个事件
                }
            }
            public int Num
            {
                get
                { return num; }
                set
                {
                    num = value;
                    Numxu("xuzhi");

                }
            }
            public double Price
            {
                get
                { return price; }
                set
                {
                    price = value;
                    lei_jichu a = new lei_jichu();
                    a.Loginsite("痞子卖鱼的", "u/admin/index.html");


                }
            }


            //下面我们就可以直接创建对象并使用属性了,可是还没有完,我们继续添加方法
            public string BookInfo()
            {
                string Html = "书名是:" + title + "<br>库存:" + num + "本<br>价格为:" + price + "元/本";
                return Html;
            }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            Book shu = new Book();
            shu.TitleCheng += new Book.TitleChengHendler(shu_TitleCheng);

            shu.Numxu += new Book.tmdxu(shu_Numxu);
            //
            //shu.SayEvent += new Book.SayEventHandler(Saysomething);
            SayEvent += new SayEventHandler(Saysomething);
            //
            shu.Title = ".net2.0入门";
            shu.Num = 5000;
            shu.Price = 43.6;

     

            Response.Write(shu.BookInfo());
        }

        void shu_Numxu(string a)
        {
            Response.Write("haha error " + a + "<br>");
        }

        void shu_TitleCheng()
        {
            Response.Write("事件执行了<br>");
        }

        public void Saysomething(object sender, SayEventArgs e)
        {
            Label2.Text = e.Username + "请注意:<br>在呢个博客<a href=" + e.Websiteurl + ">痞子菜雨夜听风小轩</a>度,唔系事必要你讲野,但系你所讲既野将来会作为呈堂证供,ok?";
           
            ///这里提示出错,当前上下文中不存在名称Label2?
        }

     

    }


    maiyude
    2010年2月22日 13:03

答案

  • 你好,

    website是可以不加这个的,但是webapplication不一样了。

    你看web appliaction多了个designer.cs,webform上所有的控件声明定义都在这里面,这个是文件是有namesapce的。
    另外web application有多种发布方式,比如每个页面编译成一个dll,或者整个网站编译成一个dll。这些都需要namespace。

    如果不同namespace控件就找不到了。

    Microsoft Online Community Support
    • 已标记为答案 maiyude 2010年2月25日 11:22
    2010年2月24日 1:48

全部回复

  • 你好,

    你的这个代码我上次说过有问题的。

    你确定Saysomething这个方法能运行吗。

    另外页面上是否有这个控件呢。
    Microsoft Online Community Support
    2010年2月23日 3:20
  • 版主大大,您好

    首先感谢您的关注,谢谢。

    下面是偶的问题:

    其次是建立 web application项目后,黏贴上面内容到lei_jichu.aspx.cs文件中,会编译通不过,当前上下文中不存在名称Label2,但是lei_jichu.aspx中偶绝对是放了id为Label2控件,晕。。。。


    建立 网站项目后,黏贴到lei_jichu.aspx.cs中,就编译通过。。。。。晕


    偶看了看,webapplication 和网站区别也就是多了design文件个。。。。咋就一个行,一个不行呢????



    maiyude
    2010年2月23日 4:36
  • 你在Design文件中找找看有没有Label2的定义,如果没有那就是没有了。

    如果没有你把页面上的那个删掉,重新拖一个label控件到页面上,命名为Label2的试试。
    Microsoft Online Community Support
    2010年2月23日 4:43
  • 感谢版主大大。。。。

    终于被偶找到了。。。

    原来是在

    using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;

    后面要加上
    namespace WebApplication1{


    ///偶原来的代码夹在这里,去掉///

    }

    这样就行了,但是为啥要这样做呢????不解?


    maiyude
    2010年2月23日 11:19
  • 你好,

    website是可以不加这个的,但是webapplication不一样了。

    你看web appliaction多了个designer.cs,webform上所有的控件声明定义都在这里面,这个是文件是有namesapce的。
    另外web application有多种发布方式,比如每个页面编译成一个dll,或者整个网站编译成一个dll。这些都需要namespace。

    如果不同namespace控件就找不到了。

    Microsoft Online Community Support
    • 已标记为答案 maiyude 2010年2月25日 11:22
    2010年2月24日 1:48