ASP.net control Postback Problem (Невозможно прочитать введенное пользователем значение!) - PullRequest
4 голосов
/ 09 февраля 2011

Я написал собственный виджет, позволяющий пользователю выбирать местоположение из базы данных местоположений.Это мой первый пользовательский элемент управления ASP.net.Казалось, что все работает нормально, но теперь есть проблема.

Мой элемент управления реализует функцию RaisePostBackEvent следующим образом:

public void RaisePostBackEvent(string eventArgument)
{
    SelectedLocationId = eventArgument.Split('|')[0];
    SelectedLocationDescription = eventArgument.Split('|')[1];
}

Я написал тестовую страницу и включил следующее в свой ASPкод:

<%= locationSelector.SelectedLocationId %>

Это работало нормально.

Однако в моем веб-приложении следующий код не работает:

    protected void Page_Load(object sender, EventArgs e)
    {
        if (Page.IsPostBack)
         Response.Write(locationSelector.SelectedLocationId);
         // SelectedLocationId is null here!!!
    }

Когда я запускаю этот код в отладчике, я вижу, что мое событие Page Load вызывает до события Post Back!Поэтому данные еще не читаются из постбэка.Я знаю, что с помощью предоставленного MS элемента управления текстовым полем текст доступен при загрузке страницы, поэтому я думаю, что, должно быть, я что-то не так делаю.

Как я могу прочитать местоположение, выбранное пользователем при событии загрузки страницыпожары?Чтобы уточнить, я ссылаюсь на страницу загрузки страницы веб-приложения.

1 Ответ

3 голосов
/ 09 февраля 2011

Вы устанавливаете SelectedLocationId для события обратной передачи, и в то же время вы пытаетесь получить его значение при первой загрузке. SelectedLocationId будет нулевым, все в порядке.

Попытка:

protected void Page_Load(object sender, EventArgs e)
    {
       if (locationSelector != null)
         Response.Write(locationSelector.SelectedLocationId);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...