Выбранное значение в выпадающем списке asp.net в репитере не возвращается - PullRequest
1 голос
/ 15 ноября 2011

У меня сейчас очень странная проблема.Я использую мастер asp.net для загрузки некоторых файлов.Файлы загружаются с помощью plupload.После того, как файлы загружены, у меня есть список файлов загрузки, сохраненных в переменной сеанса.Я использую переменную сеанса для создания таблицы, показывающей загружаемые файлы.Теперь у пользователя есть возможность установить категорию файла, используя раскрывающийся список в таблице.Когда пользователь нажимает кнопку «Готово», код считывает список файлов и категорию из таблицы.Странно то, что этот код прекрасно работает на моей машине разработки и на нескольких серверах, но на конкретном клиентском сервере значение раскрывающегося списка всегда возвращается как ноль.Вот соответствующий код:

protected void Page_Init(object sender, EventArgs e)
    {
            bindRepeater();         
    } 

private void bindRepeater()
    {
        ArrayList sessionFiles = (ArrayList)Session["PLUploadFiles"];

        IList<document> files = new List<document>();

        foreach (string fileName in sessionFiles)
        {
            document doc = new document();

            doc.FileName = fileName;
            doc.Description = fileName.Split('.').First();

            files.Add(doc);
        }

        TableRepeater.DataSource = files;
        TableRepeater.DataBind();
    }

protected void SaveButton_Click(object sender, EventArgs e)
    {

        foreach (RepeaterItem item in TableRepeater.Items)
        {
            Label descriptionLabel = (Label) item.FindControl("DescriptionLabel");
            String description = descriptionLabel.Text;

            Label fileNameLabel = (Label)item.FindControl("FileNameLabel");
            String fileName = fileNameLabel.Text;

            DropDownList categoryDropDown = (DropDownList) item.FindControl("CategoryDropDownList");
            string category = categoryDropDown.SelectedValue;

            if(SaveClicked != null)
            {
                SaveEventArgs s = new SaveEventArgs();
                s.FileName = fileName;
                s.Category = category;
                s.Description = description;

                SaveClicked(this, s);
            }

        }

        Response.Redirect(RedirectURL);
    }

Обратите внимание, что весь мастер живет в пользовательском контроле.Кто-нибудь понял, почему этот код работает нормально на большинстве машин, но не работает на одном конкретном сервере?

1 Ответ

0 голосов
/ 15 ноября 2011

Похоже, я это исправил.По какой-то причине я видел двойной постбэк.Это вызывало мой код для сброса переменных сеанса в Page_Load в неподходящее время.Обходной путь - сбросить переменные сеанса на странице, которая ссылается на страницу загрузки, чтобы они сбрасывались до загрузки страницы.Я понятия не имею, почему я вижу двойной постбэк.

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