Почему мой выпадающий список очищается после обратной передачи, когда он находится в рабочей среде, но не в тестировании?
-
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.