Ошибка свойства элемента управления сервером ASP.NET (?) - PullRequest
0 голосов
/ 17 февраля 2009

Я работаю над сервером 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», но когда я его запускаю, свойство «Name» внутри функции «someName» пусто, хотя в 'RenderContents' это не так.

Гремлины, или я что-то упустил?

1 Ответ

0 голосов
/ 17 февраля 2009

На этот вопрос будет сложно ответить, потому что без отладки невозможно будет определить, какие внешние силы манипулировали данными.

Поскольку Name является общедоступным свойством, любой элемент управления, имеющий к нему доступ, может установить для него значение null в любой момент до вашего вызова на GetCalendarString. Также, если вы звоните GetCalendarString до загрузки ViewState, это значение будет недоступно. Я подозреваю , что вы пытаетесь получить Name от ViewState до его загрузки, но, опять же, эту проблему лучше всего решить путем отладки.

Кстати - вот отличное изображение , которое показывает жизненный цикл ASP.NET и поможет вам выяснить, пытаетесь ли вы использовать ViewState до его загрузки из Request .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...