2015-01-17 4 views
1

Возможно, это очень нормальное поведение, или мне не хватает чего-то очень простого. У меня есть страница с именем Default.aspx, и она настроена на страницу по умолчанию для моего веб-приложения. На этой странице есть раскрывающийся список для категорий, и когда я выбираю любое значение, тогда response.redirect вызывается для той же страницы, и идентификатор категории передается как строка запроса. Теперь все работает нормально, когда я тестирую приложение локально. Когда я публикую веб-сайт на сервере и вызываю веб-сайт с URL-адресом www.mywebsite.com, отображается страница по умолчанию, но имя страницы не отображается. У меня нет проблем с этим, но без имени страницы мой ответ.редактор перестает работать. Так что просто суммировать все это в следующих строкахСтранно Query String исчез на реальном сервере

www.mysite.com

// On Selected Index Changed 
Response.Redirect("~/Default.aspx?catId="+ ddlCategory.SelectedItem.Value); 

адреса URL должен быть для первой категории

www.mysite.com/Default.aspx?catId=1 

но не меняется и на обратной передачи WWW. Отображается mysite.com.

Однако, если в адресной строке у меня есть,

www.mysite.com/Default.aspx 

и теперь, если я изменить выбранный индекс падения вниз, то он работает отлично и URL становится

www.mysite.com/Default.aspx?catId=1 

Теперь дон Не знаю, задавался ли этот вопрос уже потому, что я даже не знаю, в чем проблема, и что мне искать.

Обновление: Теперь это также воспроизводится в локальной системе. Похоже, что когда имя страницы Default.aspx отсутствует в адресной строке с url, тогда SelectedIndexChanged не вызывается. Если Default.aspx находится в адресной строке, тогда вызывается SelectedIndexChanged.

+0

Так просто, чтобы понять: 1. Заходите на страницу веб-сайта по умолчанию и загружает правильно в том числе в раскрывающемся меню 2. Вы выбираете пункт из выпадающего меню и он направляет вас к ** неправильно * * page 3. Если вы вручную наберете www.mysite.com/Default.aspx?catId=1, он будет правильно загружать страницу. Можете ли вы опубликовать остальную часть своего кода просмотра? –

+0

Нет страницы не перенаправляется на неправильную страницу. (1) - Я вызываю сайт www.mysite.com Отображается страница по умолчанию. (2) - Я меняю категорию, изменяя значение списка. Он вызывает Response.Redirect ("~/Default.aspx? CatdId =" +2); (3). Страница перенаправляется, но снова отображается страница www.mysite.com, и строка запроса не указана с адресом. (4). Но если URL-адрес - www.mysite.com/Default.aspx, и теперь я изменяю раскрывающийся список, тогда строка запроса присутствует. –

+0

Также обратите внимание, что я перенаправляю на ту же страницу не на другую страницу. Я просто добавляю строку запроса. –

ответ

0

Ну, я все еще не могу найти точную причину поведения, о котором я упомянул в своем вопросе, но я применил обходное решение. Я теперь не вызываю событие SelectedIndexChange из кода позади, вместо этого я использую Javascript для перенаправления на ту же страницу с строкой запроса.

<script type="text/javascript"> 
    function CategoryChanged() { 
     var ddlReport = document.getElementById("<%=ddlCategory.ClientID%>"); 
     window.location = 'Default.aspx?catId=' + ddlCategory.value; 
    } 
</script> 

И называется это на OnChange моего DropDownList,

onchange="CategoryChanged()" 

Помимо этого решения я хотел бы знать, что почему коды за событием не вызывается, когда имя страницы не упоминаются в ссылке. Поэтому, если кто-то имеет какую-либо идею, поделитесь своими мыслями.

+0

Это решение превосходно в любом случае: если вам не нужно привлекать сервер, тогда не делайте этого! Это позволяет избежать ненужного запроса на сервер, жизненного цикла страницы и ответа, содержащего перенаправление. – mason

Смежные вопросы