尝试从ASPX页面设置MasterPage中的公共属性时,我遇到堆栈溢出。
我正在使用TabContainer创建一个“贺卡”编辑器。每个选项卡都有一个用户控件,当活动选项卡更改时,所有内容都会更新 - 这样做我需要将所有数据存储在母版页属性中。
从ASPX页面:
protected void tcTabs_ActiveTabChanged(object sender, EventArgs e)
{
Master.Message = "blahblah";
}
来自MasterPage:
public string Message
{
get { return Message; }
set { Message = value; }
}
这就是我得到堆栈溢出的地方;在集{}中。我尝试设置的并不重要,每次都会遇到同样的问题。我确定我错过了一些小事,但据我所知,我正在遵循我找到的所有例子。
答案 0 :(得分:8)
问题是Message属性正在调用自身。您需要设置成员变量或控件属性。
修改:示例:
string mMessage = string.Empty;
public string Message
{
get { return mMessage; }
set { mMessage = value; }
}
答案 1 :(得分:1)
Kieron是正确的,你的属性本质上是一个无限的递归方法调用。你的财产被编译成这样的东西:
public string get_Message() { return get_Message(); }
public void set_Message(string value) { set_Message(value); }
这显然不正确。你需要一个支持领域:
private string message;
public string Message { get { return this.message; } set { this.message = value; } }
或者如果你正在使用C#3,只需像这样定义Message:
public string Message { get; set; }
答案 2 :(得分:0)
Buddy,每当你不使用自动属性时
public string Message{get;set;}
你需要有一些私有变量或一些变量,你可以存储属性的值...通常我这样做:
private string _Message;
public string Message
{
get{return _Message;}
set{_Message = value;}
}
简单?是。