我在A.ascx.cs文件里定义如下:
public static string IndexInfo_P="xxxx";
如何在B.ascx.cs文件里修改IndexInfo_P?
在VS2003里可以用如下方法修改:
A.IndexInfo_P="mmm";
但在VS2005里如何修改???

解决方案 »

  1.   

    不一样的,我刚试过了,不可以的,加上namespace又出错
    留个名,帮你顶
      

  2.   

    这是跟2005与2003编译模式不同相关的,2005不像2003把真个网站编译成一个DLL,有可能这两个用户自定义控件会编译到两个不同的DLL文件中,所以就会出现访问不到的问题。
      

  3.   

    用户自定义控件定义静态变量是没有任何意义的,你可以把静态变量定义到App_Code目录中的cs文件中。
      

  4.   

    可以,不过最好把变量存在viewState里
    ;
      

  5.   

    public class B : System.Web.UI.UserControl
    { private void Page_Load(object sender, System.EventArgs e)
    {
    // 在此处放置用户代码以初始化页面
    if( !IsPostBack )
    this.var = "foo";
    } #region Web 窗体设计器生成的代码
    override protected void OnInit(EventArgs e)
    {
    //
    // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
    //
    InitializeComponent();
    base.OnInit(e);
    }

    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器
    /// 修改此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {
    this.Load += new System.EventHandler(this.Page_Load); }
    #endregion
    public string var
    {
    get{
    if( ViewState["b"] != null)
    return ViewState["b"].ToString();
    else
    return "";
    }
    set{
    ViewState["b"] = value;
    }
    }
    }
    }
    using System.Drawing;
    using System.Web;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls; /// <summary>
    /// A 的摘要说明。
    /// </summary>
    public class A : System.Web.UI.UserControl
    {
    protected System.Web.UI.WebControls.Button Button1; private void Page_Load(object sender, System.EventArgs e)
    {
    // 在此处放置用户代码以初始化页面
    } #region Web 窗体设计器生成的代码
    override protected void OnInit(EventArgs e)
    {
    //
    // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
    //
    InitializeComponent();
    base.OnInit(e);
    }

    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器
    /// 修改此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {
    this.Button1.Click += new System.EventHandler(this.Button1_Click);
    this.Load += new System.EventHandler(this.Page_Load); }
    #endregion private void Button1_Click(object sender, System.EventArgs e)
    {
    B b1 = (B)this.Page.FindControl("B1");
    if( b1 != null )
    Response.Write( b1.var );
    }
    }
    }
    更好的方法应该直接用veiwstate