aspx页面代码:<script language="javascript" type="text/javascript">
var city_data="";
city_data="存省市区";
function full_city()
{
        city_arr=city_data.split(",");
        var cs_i=1;
        for (i=1;i<=city_arr.length;i++)
        {
                //document.write(city_arr[i-1].substring(2,6)+"<br>");
                if(city_arr[i-1].substring(2,6)=="0000")
                {
                document.all.city1.options[cs_i]=new Option(city_arr[i-1].substring(7,city_arr[i-1].length),city_arr[i-1].substring(0,6));
                cs_i++;
                }
        }
//getCityValue();
}
//省级行政单位改变时填充地级行政单位
function city_1(city1_str)
{        fcs_i=1;
        var str_city1=city1_str/10000;
        //alert(str_city1);
        for (i=1;i<=city_arr.length;i++)
        {
                if(city_arr[i-1].substring(0,2)==str_city1&&city_arr[i-1].substring(2,6)!="0000"&&city_arr[i-1].substring(4,6)=="00")
                {
                        document.all.city2.options[fcs_i]=new Option(city_arr[i-1].substring(7,city_arr[i-1].length),city_arr[i-1].substring(0,6));                        
                        fcs_i++;
                }
        }
        document.all.city2.length=fcs_i;
}
//地级行政单位改变时填充县级行政单位
function city_2(city2_str)
{        fcs_i=1;
        var str_city2=city2_str/100;
        //alert(str_city1);
        for (i=1;i<=city_arr.length;i++)
        {
                if(city_arr[i-1].substring(0,4)==str_city2&&city_arr[i-1].substring(4,6)!="00")
                {
                        document.all.city3.options[fcs_i]=new Option(city_arr[i-1].substring(7,city_arr[i-1].length),city_arr[i-1].substring(0,6));
                        fcs_i++;
                }
        }
        document.all.city3.length=fcs_i;
}
//填充实际需要使用的INPUT的值
function getCityValue()
{
        document.all.city_value.value="";
                
        if(document.all.city1.value!="")
        {document.all.city_value.value=document.all.city1.value;}
        
        if(document.all.city2.value!="")
        {document.all.city_value.value=document.all.city2.value;}
        if(document.all.city3.value!="")
        {document.all.city_value.value=document.all.city3.value;}        
}
//根据城市数据的默认值选种选择项
function selectedValue()
{
        //显示第一个地区
        for(i=1;i<=document.all.city1.length;i++)
        {
                if(document.all.city1.options[i-1].value.substring(0,2)==document.all.city_value.value.substring(0,2))
                {
                        document.all.city1.selectedIndex=i-1;
                }
                
        }
        city_1(document.all.city1.value);
        //显示第二个地区
        for(i=1;i<=document.all.city2.length;i++)
        {
                if(document.all.city2.options[i-1].value.substring(0,4)==document.all.city_value.value.substring(0,4))
                {
                        document.all.city2.selectedIndex=i-1;
                }
        }
        city_2(document.all.city2.value);
        //显示第三个地区
        for(i=1;i<=document.all.city3.length;i++)
        {
                if(document.all.city3.options[i-1].value==document.all.city_value.value)
                {
                        document.all.city3.selectedIndex=i-1;
                }
        }
}
</script>
<body onload="full_city();selectedValue()">
<form name="form1" action="test.aspx">
<SELECT id="city1" onchange="eval('city_1('+this.value+')');eval('city_2('+document.all.city2.value+')');getCityValue();" name="city1">
<OPTION value="">请选择</OPTION>
</SELECT> 
<SELECT id="city2" onchange="eval('city_2('+this.value+')');getCityValue();" name="city2">
<OPTION value="">请选择</OPTION>
</SELECT> 
<SELECT id="city3" name="city3" onchange="getCityValue()" runat="server">
<OPTION value="">请选择</OPTION>
</SELECT> 
<!------------上面三行不用管他,是辅助项目,你要使用的是下面一行,注意ID不能改变,NAME你可以随意改变。如果你默认了VALUE,则会自动选中代码为你的默认值的城市------------------->
<input type="hidden" name="city_value" id="city_value" value="500104">
</form>
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</body>cs文件中只有一点代码: this.lbltest.Text = Request.Form["city_value"].ToString();
一运行就出异常:未将对象引用设置到对象的实例。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。

解决方案 »

  1.   

    <asp:Label ID="Label1" runat="server" Text="Label"> </asp:Label> 
    应该放在Form标签内
    Request.Form["city_value"]
    这个你是写在那里的??
      

  2.   

    为什么要有提交按钮,在用户选择完省市区后,获得所选的值存到数据库里,我这个页面只是测试,所以要所选的值输出看下我这么取this.Request.Form["city1"].ToString();也出那异常
      

  3.   

    this.lbltest.Text = Request.Form["city_value"].ToString(); 
    这句你放在Page_Load里了?
      

  4.   

    1、<form name="form1" action="test.aspx" runat="server"> 加了runat="server"
    2、<input type="hidden" name="city_value" id="city_value" value="500104" /> 
       换成
      <asp:HiddenField ID="city_value" runat="server" Value="500104" />
    3、this.lbltest.Text = Request.Form["city_value"].ToString(); 
       换成
       this.lbltest.Text = city_value.Value.ToString();就可以取到了。
      

  5.   


    谢谢你提醒了。我确实写到Page_Load里了,现在写到按钮里了,不出异常,但报脚步错误,而且报的那错在当前页面没有,是其他页面的错(为什么会这样?),还是取不到值
      

  6.   

    <form name="form1" action="test.aspx"> 
    是这个action设置的问题,点击button后就会跳转到test.aspx
      

  7.   

    改成服务器控件可以取到值,我试过了。
    1、 <form name="form1" action="test.aspx" runat="server"> 加了runat="server" 
    2、 <input type="hidden" name="city_value" id="city_value" value="500104" /> 
      换成 
      <asp:HiddenField ID="city_value" runat="server" Value="500104" /> 
    3、this.lbltest.Text = Request.Form["city_value"].ToString(); 
      换成 
      this.lbltest.Text = city_value.Value.ToString();