2009-02-17 92 views
0

我正在处理一些ASP.NET服务器控件,并且遇到问题。我可能会监督一些事情,但我不知道。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”使用性质“名称”设置控制的名字,然后叫“someName”功能和“someName”功能也使用属性“名称”,但是当我运行,函数'someName'内的属性'Name'是空的,尽管在'RenderContents'中它不是。

Gremlins,或者我错过了什么?

+0

你有一个完整的例子吗? – 2009-02-17 17:07:40

+0

发布它有点大... – lopkiju 2009-02-17 17:18:05

回答

0

这将很难回答,因为没有调试就无法告诉外界的力量如何操控数据。

由于Name是公共财产,任何有权访问它的控件都可以在您致电GetCalendarString之前的任何时间将其设置为null。另外,如果您在装入ViewState之前拨打GetCalendarString,则此值将不可用。我嫌疑人你试图从ViewStateName它加载之前,但再次这是一个问题最好通过调试解决。

顺便说一下 - here is a great image显示了ASP.NET生命周期,并将帮助您确定在从Request加载之前是否尝试使用ViewState