как извлечь значение строки запроса со страницы .aspx и передать его на страницу ascx - PullRequest
4 голосов
/ 08 июля 2011

Возможно ли получить значение идентификатора из Request.QueryString из файла aspx и передать его в файл ascx для успешного обновления профиля с использованием полученного идентификатора?

Ответы [ 4 ]

6 голосов
/ 08 июля 2011

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

Так что, как и говорили большинство людей, вы все равно можете получить доступ к запросу.Свойство QueryString внутри UserControl, но это, вероятно, не лучшая идея.Создание свойства в элементе управления, которое устанавливается страницей контейнера, является гораздо лучшей идеей.

Лучшая идея, на мой взгляд, и то, что я почти всегда делаю, это создать на контроле метод создания с именем LoadData (или что-то похожее) с параметрами для всех этих значений строки запроса, которые вам нужны.Таким образом, у вас есть единственная точка входа для этих данных, поэтому ясно, в какой момент эти значения устанавливаются и для чего они устанавливаются.Если вы идете по пути свойств, всегда возникает вопрос о том, были ли установлены все свойства и установлены ли они в нужной точке в жизненном цикле страницы (это может быть сложно во время обратных передач)

3 голосов
/ 08 июля 2011

На странице aspx, в пользовательском элементе управления ascx, на главной странице , в пользовательском элементе управления и почти везде можно получить доступ к строке запроса. Используйте один из этих методов:

  1. Доступ непосредственно к строке запроса прямо в вашем пользовательском элементе управления через Page.Request.QueryString
  2. Создайте свойство в своем пользовательском элементе управления, затем на своей странице приведите свой пользовательский элемент управления, чтобы получить ссылку на это свойство и установить это свойство. Затем в вашем пользовательском элементе управления используйте это свойство.
  3. В любом месте среды ASP.NET, получить доступ к запросу (включая строку запроса) через HttpContext.Current.Request
2 голосов
/ 08 июля 2011

Вы можете получить доступ к коллекции Request.QueryString из кода вашего UserControl.

0 голосов
/ 08 июля 2011

Вы можете передать значение строки запроса в качестве свойства элемента управления ascx, например:

<cc:myControl id="myControl" runat="server" myValue='<%=request.querystring("id")' />

Затем в своем коде для пользовательского элемента управления добавьте в свой класс следующее:

Public myValue as String
...