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: 未将对象引用设置到对象的实例。
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: 未将对象引用设置到对象的实例。
应该放在Form标签内
Request.Form["city_value"]
这个你是写在那里的??
这句你放在Page_Load里了?
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();就可以取到了。
谢谢你提醒了。我确实写到Page_Load里了,现在写到按钮里了,不出异常,但报脚步错误,而且报的那错在当前页面没有,是其他页面的错(为什么会这样?),还是取不到值
是这个action设置的问题,点击button后就会跳转到test.aspx
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();