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

我正在处理一些ASP.NET服务器控件,我遇到了一个问题。 也许我监督了什么,我不知道

无论如何:

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。我不知道发生了什么。无论如何,谢谢你们的帮助和时间。