2012-03-15 5 views
1

.NET новичок здесь.Настройка видимого свойства на элементах управления .NET

У меня есть страница с рядом разделов. Я хочу создать другую страницу с гиперссылками на эту страницу и гиперссылки на разделы внутри нее.

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

Как установить видимое свойство незапрашиваемых элементов управления (в asp: Panel) из ссылки на предыдущей странице, чтобы они не отображались на странице при запросе другого раздела?

многие ТИА

mcalex

ответ

0

У вас есть следующие варианты

  1. Wrap каждый раздел управления внутри элемента управления сервера asp.net панели
  2. При нажатии на гиперссылку на главную страницу, передать панель для того, чтобы через строку запроса или сеанса в качестве параметра, как на вашем linkbuton

    Response.Redirect("~/myPage.aspx?secId=info") 
    
  3. Тогда на вашей странице перенаправлено установить все панели Visibility=false внутри проверки Pageload для querstring значения & установить видимое свойство панели к истинному или ложному

    if(!Page.IsPostBack) 
    { 
         string panelToEnable= Request.QueryString["secId"]; 
         switch(panelToEnable) 
         { 
          case("info"): 
            panelInfo.Visible=true; 
            break; 
          case("details"); 
            panelDetails.Visible=true; 
            break; 
          default: 
            panelMaster.Visible=true; 
            break; 
         } 
    } 
    

В качестве альтернативы вы можете поместить раздел ссылки внутри перенаправлены страниц & еще больше упростить вещи (удалить строки запроса и т.д.)

+0

Этот подход имеет смысл, но я не очень люблю веб-пользователя (lol, я из java). Как получить доступ к ответу, если моя ссылка на главную страницу - asp: Hyperlink? Тег гиперссылки не имеет свойства Request или Response. mcalex – mcalex

+0

Вы можете использовать элемент управления на стороне сервера и дважды щелкнуть по нему, чтобы написать Response.Redirect, или вы можете просто скопировать код на свой тег, например Info Section

+0

Спасибо Damien Joe. Проблема решена. – mcalex

0

Вы можете осмотреть Request.ServerVariables["HTTP_REFERER"]

Однако, если пользователь обновляет страницу, это изменится.

0

У вас есть 2 способа выполните эту проблему:

  1. Используйте строку запроса: передайте свои различные значения параметров в строке запроса. На целевой странице/контроле проверьте строку запроса и сделайте раздел видимым/невидимым как ваше требование.

  2. Использование данных сеанса: используйте специальный ключ для сохранения режима. Когда вы нажимаете кнопку ссылки на других страницах, используйте функцию обратного вызова (в CSharp) для установки данных сеанса и перенаправления на целевую страницу. На этой странице будут проверяться данные, сохраненные в состоянии сеанса, и сделать раздел видимым/невидимым.

Pros & Против:

  • 1-ый раствор может быть использован для чистого HTML ссылки, но параметр показан в строке запроса так что пользователь может изменить его для отображения других секций.

  • 2-е решение не может использоваться для чистой HTML-ссылки, но не позволяет пользователю изменять значения в состоянии сеанса. Так что это больше безопасности.

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