我创建了一个用户控件,用于级联两个下拉列表“省”和“城市”。但每当我运行它时,错误消息说“发生了'System.StackOverflowException'类型的未处理异常” 这是我的用户控制代码
public partial class cascadingdropdownlist : System.Web.UI.UserControl
{
public string province_selectedvalue
{
set
{
string province_selectedvalue = value;
}
get
{
return city_selectedvalue;
}
}
public string city_selectedvalue
{
set
{
string city_selectedvalue = value;
}
get
{
return city_selectedvalue;
}
}
protected void Page_Load(object sender, EventArgs e)
{
string a = province_selectedvalue;
............
}
}
在主页
中<uc1:cascadingdropdownlist ID="province_city" runat="server" OnPreLoad="province_city_OnPreLoad"/>
背后的代码是
protected void province_city_OnPreLoad(object sender, EventArgs e)
{
province_city.province_selectedvalue = myReader["Province/State"].ToString();
province_city.city_selectedvalue = myReader["City"].ToString();
}
调用用户控件时发生错误:province_selectedvalue.get方法。为什么我不明白为什么?任何人都可以帮助我,非常感谢
答案 0 :(得分:2)
问题出在您的财产中:
public string city_selectedvalue
{
set
{
string city_selectedvalue = value;
}
一遍又一遍地调用city_selectedvalue上的setter(或getter!),导致堆栈溢出。
用此
替换您的财产public string city_selectedvalue { get; set; }
我还认为你可以用province_selectedvalue做同样的事情,但它的getter引用city_selectedvalue - 这是正确的吗?
答案 1 :(得分:0)
您收到该错误,因为代码处于不定式循环中。当你调用province_selectedvalue.get时,你正在调用city_selectedvalue get。并且您认为您正在调用的变量中的属性具有相同的名称,因此它反复调用相同的内容。
将代码更改为
public string city_selectedvalue { get; set; }
并且
public string province_selectedvalue { get; set; }