Часто, если что-то находится в UserControl, это либо потому, что функциональность в элементе управления достаточно значительна, чтобы ее можно было разбить на собственный многократно используемый контейнер, который можно повторно использовать на другой странице.Если этот элемент управления вообще когда-либо будет повторно использоваться на другой странице, он действительно не должен ссылаться на параметры строки запроса, потому что элемент управления не должен делать предположений о том, на какой странице он находится.Что если этот элемент управления будет включен на другую страницу, параметры строки запроса которой названы по-другому?Или, может быть, на другой странице это значение поступит из базы данных или ViewState или будет каким-то образом автоматически определено?Поэтому мое общее правило заключается в том, что если вы собираетесь создать UserControl, никогда, никогда не делайте никаких предположений относительно страницы, на которой он размещен.
Так что, как и говорили большинство людей, вы все равно можете получить доступ к запросу.Свойство QueryString внутри UserControl, но это, вероятно, не лучшая идея.Создание свойства в элементе управления, которое устанавливается страницей контейнера, является гораздо лучшей идеей.
Лучшая идея, на мой взгляд, и то, что я почти всегда делаю, это создать на контроле метод создания с именем LoadData (или что-то похожее) с параметрами для всех этих значений строки запроса, которые вам нужны.Таким образом, у вас есть единственная точка входа для этих данных, поэтому ясно, в какой момент эти значения устанавливаются и для чего они устанавливаются.Если вы идете по пути свойств, всегда возникает вопрос о том, были ли установлены все свойства и установлены ли они в нужной точке в жизненном цикле страницы (это может быть сложно во время обратных передач)