2010-07-05 3 views
3

У меня есть простой веб-форму, которая называется default.aspx в структуре папок WebRoot/папки/Почему Request.QueryString ["key"] перестает работать?

Когда я перейти к http://myapp/folder/?key=value страница возвращается нормально, и когда я называю

<%= Request.QueryString[0] %> 

я получаю http://myapp/folder/?key=value оказал на стр. Однако, если я позвоню

<%= Request.QueryString["key"] %> 

я ничего не получаю, и когда я называю

<%= Request.QueryString[1] %> 

я Index was out of range. Must be non-negative and less than the size of the collection.

Это кажется очень тривиальной проблемой, но я не могу понять, что происходит ?!

+0

Try Http:?. //myapp/folder/default.aspx ключ = значение – Bermo

+0

я все еще получаю ту же ошибку :(никогда не сталкивалась с этим до ... weird –

ответ

3

Так получается, что за кулисами Sitecore превращает строку запроса в

? Странице = запрашиваемых-page.aspx? Ключ = значение

Но URL в браузере выглядит как просили. Очевидно, что он прилипает к секунде? в фактическом url делает все после второго? исчезнуть

0

Если вы применили точку останова, а затем наведите указатель мыши на QueryString в Visual Studio, вы сможете просмотреть все ключи. В качестве альтернативы вы можете запросить коллекцию и распечатать имена ключей, чтобы увидеть, немного ли она отличается от ожидаемой.

+0

Хмм, когда я сделал foreach над коллекцией, я получил один ке y называется «страница». Эта веб-форма находится в проекте Sitecore CMS, но создается в Visual Studio, а не через интерфейс Sitecore, мне интересно, запутался ли Sitecore со страницей до того, как она отобразит –

0

Если вы делаете что-то, что на самом деле не должно находиться под управлением Sitecore (хотя я никогда не видел, чтобы он делал невозможным работу с коллекцией QueryString), попробуйте добавить свою/папку/в параметр ignoreUrl. Sitecore получит из ваших волос, то ;-)

0

строка запроса должна быть в /default.aspx?key = значение, то вы будете иметь возможность получить доступ с помощью [ «ключ»] пары

0

вы можете использовать

Request.QueryString.Count(); 

и получить счетчик строк запроса modifiy кода соответственно