Почему мой выпадающий список очищается после обратной передачи, когда он находится в рабочей среде, но не в тестировании?

StackOverflow https://stackoverflow.com/questions/1221676

  •  10-07-2019
  •  | 
  •  

Вопрос

У меня есть раскрывающийся список в веб-форме ASP.NET. Это установлено на автостопбек и viewstate включен. Когда я запускаю свой проект из Visual Studio, я могу изменить значение, выбрать новое значение в обратной передаче и отобразить некоторые связанные результаты в сетке (Infragistics). Я могу постоянно менять значение и сетку обновлять правильно.

Когда я копирую это из своего окна test / dev на работающий сервер Windows 2008, все меняется. Первое изменение в раскрывающемся списке вызывает обратную передачу, но сетка не обновляется, поскольку событие SelectedIndexChanged в раскрывающемся списке не запускается. Второе изменение полностью очищает раскрывающийся список.

Элементы в раскрывающемся списке создаются при первой загрузке страницы в виде простых элементов ListItems, которые добавляются в коллекцию Items элемента управления. Значения извлекаются из системы Microsoft CRM, но не привязываются к данным.

Кто-нибудь может объяснить, что происходит не так и почему поведение в Visual Studio будет отличаться от того, что происходит при жизни?

    protected void Page_Load(object sender, EventArgs e)
    {
        _crm = GetCrmConnection();

        if (!IsPostBack)
        {
            ShowDepotList();
            ShowJobsForCurrentDepot(); // Updates the grid - not shown in SO
        }
    }


    private void ShowDepotList()
    {
        List<BusinessEntity> depots = _crm.GetDepots();
        foreach (DynamicEntity depot in depots)
        {
            string depotName = depot.Properties["dpt_name"].ToString();
            string locationName = depot.Properties["dpt_locationname"].ToString();

            ListItem depotListItem = new ListItem
            {
                Text = string.Format("{0} - {1}", depotName, locationName),
                Value = ((Key)depot.Properties["dpt_sitedetailid"]).Value.ToString()
            };

            DepotInput.Items.Add(depotListItem);
        }
   }


   protected void DepotInput_SelectedIndexChanged(object sender, EventArgs e)
   {
        ShowJobsForCurrentDepot();
   }
Это было полезно?

Решение

Если вы уверены, что код на тестовом компьютере и на действующем компьютере одинаков - вы уверены, что web.config также одинаков?

Вы можете включать и выключать ViewState в файле web.config:

<pages enableViewState="false" />

Возможно, вы включили его при разработке, но отключили в прямом эфире web.config.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top