Вот проблема ..
У меня есть небольшая страница с ярлыком, выпадающим списком и кнопкой отправки.
<div>
<asp:label id="Message" runat="server"/>
<br />
Which city do you wish to look at on hotels for?<br /><br />
<asp:dropdownlist id="Dropdownlist1" runat="server" EnableViewState="true">
</asp:dropdownlist>
<br /><br /><br /><br />
<input type="Submit" />
</div>
При загрузке формы я вставляю элементы в выпадающий список, и по нажатию кнопки я отображаю количество элементов в выпадающем списке. Вот код для этого.
if (Page.IsPostBack)
{
Message.Text = "You have selected " + Dropdownlist1.Items.Count.ToString();
}
else
{
Message.Text = "You have selected " + Dropdownlist1.Items.Count.ToString();
Dropdownlist1.Items.Add("Madrid");
Dropdownlist1.Items.Add("Chennai");
Dropdownlist1.Items.Add("New York");
}
Вот забавная часть. Если я запускаю его прямо из IDE, он работает отлично. Я получаю счет как 0 в первый раз и 3, когда я нажимаю кнопку отправки. Мне нужно запустить этот небольшой код в существующем виртуальном каталоге. Если я запускаю ту же страницу aspx в этом виртуальном каталоге, я получаю счет 0 в первый раз, когда он загружается. Когда я нажимаю «Отправить», я получаю счет 0 и не вижу никаких элементов в раскрывающемся списке, он очищается. Я установил viewstate в true, чтобы я помню, что было вставлено.
Я не уверен, какая разница, когда я запускаю его из IDE и когда я запускаю его из другого виртуального каталога. Я довольно новичок в Asp.Net, поэтому я исчерпал все свои варианты, чтобы узнать, как работает выпадающий список. Есть ли здесь конфиг, которого мне не хватает?
Кстати, к вашему сведению, я сталкиваюсь с той же проблемой, когда помещаю DropDownList в элемент управления Wizard. При запуске из IDE он работает нормально, но когда я запускаю из виртуального каталога, он не получает выбранного значения и не запоминает элементы в выпадающем списке.
Любая помощь по этому вопросу будет принята.
извините :(, еще пара вопросов
Согласно вашему коду, список заполняется только тогда, когда это не PostBack. Поэтому, когда вы нажимаете кнопку, список становится пустым. Если вы заполняете список динамически, элементы не запоминаются. Вы должны добавить в каждую Page_load. Состояние просмотра будет помнить только, какой элемент был выбран.
Как он запоминает элементы, когда страница выполняется непосредственно из IDE, и не запоминает, когда я запускаю из виртуального каталога. Есть ли состояние просмотра, которое мне может понадобиться, чтобы заставить его работать. Настройка кеша тоже не очень удалась. Я включил информацию о трассировке, еще раз забавная вещь: |, трассировка происходит, когда выполняется непосредственно из IDE, а не из виртуального каталога. Еще раз вопрос, дочерний каталог web.config должен переопределить родительский web.config правильно?
Спасибо, что ответили.