页面A 给页面B 传了一个值.
B?id=3;
到B页面了,我无意中将Request.QueryString[id]赋给一个字段id 但根本就不能 识别到Request.QueryString; 当然写到方法里是没有问题的。这个问题是怎么回事啊class B:page
{
   int id=  Request.QueryString[id];
   protected void Page_Load(object sender, EventArgs e)
   {   }
}

解决方案 »

  1.   

    int id= Convert.ToInt32(Request.QueryString[id]); 
    如果是aspx页面,这就奇怪了!
      

  2.   

    有这样一个知识点
    就是C#的类中的每个方法都隐含着一个this参数,该参数类型就是类自身,
    所以在方法里就可以使用this来引用类的成员
    如果写到类的方法外面的话就引用不到了,就是你说的"但根本就不能 识别到"这个知识点在李建忠老师的LINQ的某WEBCAST视频教程中有提到过
      

  3.   

    我们知道,计算机的底层世界并不知道什么是面向对象,而我们在对象里定义的实例方法都包含一个隐藏参数,这个参数就是指向当前对象实例的指针,C# 3.0的扩展方法在形式上模仿了这种做法,但由于扩展方法本质上并不属于与之相关的类,所以你无法在扩展方法里访问类内部的私有成员。这篇文章里有提到,楼主可以参考下
    http://www.kuqin.com/language/20080613/9444.html
      

  4.   

    int id=Convert.ToInt32(Request.QueryString["id"]); //接收Response.Redirect(“a.aspx?id=”+id);// 传值
      

  5.   

    int i=0;
    if(int.TryParse(Request.QueryString["id"],out i))
    {
    }
      

  6.   


    首先类中方法以外只能声明字段和赋值运算,而不能调用对象,或者对象或方法的属性呀~~
    int id=  Request.QueryString[id];//Request是Page的非静态属性,而这里没有Page的一个引用,所以不可能调用
    /// <summary>
    ///模拟设计
    /// </summary>
    public class Request 
    {
        public  string QueryString;
    }
    public class Page
    {
        public Page Page;
        Request request;
        public Request Request
        {
            get { return request; }
        }
    }
    public class TestPage:Page 
    {
        //但在这里调用不行呀 Page.Page.Request      (Requset需要一个Page的引用来调用,因为它是非静态的,这里只能调用Page的静态方法或属性
        //在这个地方只能用new创建对象,而不能直接调用基类的实例字段,也就是说这里只能是类级别的,静态的
        protected void test() 
        {
            string aa=Page.Page.Request.QueryString;
        }
    }
      

  7.   

    你的querystring 要转类型先可以拿到..
      

  8.   

    int id=Convert.ToInt32(Request.QueryString["id"]); 
    类型~
      

  9.   

    int id=Convert.ToInt32( Request.QueryString["id"]); 
     一定要记住加双引号
      

  10.   

    转型啊
    Convert.ToInt32(Request.QueryString["ID"].ToString());