ASP.NET服务器控件属性问题
我正在处理一些ASP.NET服务器控件,我遇到了一个问题。 也许我监督了什么,我不知道 无论如何:ASP.NET服务器控件属性问题,asp.net,controls,properties,Asp.net,Controls,Properties,我正在处理一些ASP.NET服务器控件,我遇到了一个问题。 也许我监督了什么,我不知道 无论如何: public string Name { get { String s = (String)ViewState["name"]; return ((s == null) ? String.Empty : s); } set { ViewState["name"] = value; } } pro
public string Name
{
get
{
String s = (String)ViewState["name"];
return ((s == null) ? String.Empty : s);
}
set
{
ViewState["name"] = value;
}
}
protected override void RenderContents(HtmlTextWriter output)
{
txt.ID = Name; // Name here exists
txt.Text = DateTime.Now.ToShortDateString();
txt.RenderControl(output);
output.Write(someName(someValue));
}
public string GetCalendarString(string date)
{
some code...
// Name property is null
}
“RenderContents”使用属性“Name”来设置控件名,然后调用“someName”函数,“someName”函数也使用属性“Name”,但当我运行它时,函数“someName”中的属性“Name”为空,尽管在“RenderContents”中不是
小精灵,还是我遗漏了什么?这将很难回答,因为如果不进行调试,就无法判断是什么外力操纵了数据 由于名称是一个公共属性,所以在调用GetCalendarString之前,任何有权访问该名称的控件都可以将其设置为null。此外,如果在加载ViewState之前调用GetCalendarString,则此值将不可用。我怀疑您正在试图在加载ViewState之前从ViewState获取名称,但这也是一个通过调试最好解决的问题
顺便说一句-这显示了ASP.NET的生命周期,并将帮助您确定在从请求加载ViewState之前是否尝试使用它。您有完整的示例吗?因此,请隔离相关的位。在隔离相关位的同时,您可能会发现问题所在。您肯定还没有给我们提供足够的信息。尽管如此,我可以排除函数并发布RenderContent和属性。这可能是渲染/页面生命周期问题。您需要确保在设置值时查找该值。我将准确地回答Dave所说的。幸运的是,我先看了评论。Dave,在一个真实的答案中给他一个页面生命周期的链接,因为你完全正确。奇怪。我刚刚调试过它,函数中的Name字段不是null。然后我呈现了Name属性,它也不是null。我不知道发生了什么。无论如何,谢谢你们的帮助和时间。