应该空值将type==>ViewState["type"]

解决方案 »

  1.   

    你的type是动态变量,这样声明就不会有问题了
    static string type;
      

  2.   

    if(!IsPostBack)
     {
    type="测试";  }改成:type="测试";
      

  3.   

    你这样是保存不了变量的值的,用楼上的方法或者用session
      

  4.   

    是null,在你选了DropDownList1后,type先是等于“其他”,然后就变成"null"了,页面 是有生命周期的,当用户看到页面时,页面已经完成了所有的事件,清除了所有的对象,所以type=null,当你点button时,又开始了第二个往返行程,第二个生命周期,由于第二次没有执行对type赋值的代码,所以type是null 的
      

  5.   

    当在两个过程或方法间要共享一个变量的值时,而她们又不在同一个往返行程内执行,那么就要使用session或ViewState等。。最好用ViewState  如:<Script runat="server">
    string type;
    void Page_Load(object obj,EventArgs e)
    {
    if(!IsPostBack)
     {
       ViewState["type"]="测试";  }}
    void DropDownList1_SelectedIndexChanged(object sender, System.EventArgs e)
    {ViewState["type"]="其它";}
    void OnClick_Button(object obj,EventArgs e)
    {
    string test=ViewState["type"];
    .........
    }
    </Script>
      

  6.   

    楼上讲得不错,是变量的生命周期问题你这三个函数每次对type变量进行赋值时面对的都是一个新的string变量"type"讲到丢失,当这个页面显示出来的时候变量就已经丢失了