Фильтрация содержимого главной страницы по отношению к странице asp

#asp.net #visual-studio #master-pages

#asp.net #visual-studio #мастер-страницы

Вопрос:

У меня есть главная страница с заголовком и меню, теперь я хочу, чтобы, если я открою страницу login.aspx, меню главной страницы должно быть скрыто, заголовок rest останется там, значит, требуется главная страница, но без меню, каково наилучшее решение для этого?

Комментарии:

1. Добавьте тег div вокруг меню и установите для атрибута runat server значение true. База на текущей странице устанавливает видимость тега div при загрузке страницы.

2. Просто хотел упомянуть обновление в моем ответе, поскольку StackOverflow не уведомил бы об этом автоматически. Вы можете оставлять мне комментарии о том, как реализовать или почему ни один из предложенных способов не удовлетворит вашим потребностям.

Ответ №1:

Получите элемент управления menu и установите для его свойства Visible значение false Предупреждение: это средство поиска элемента управления с жестко закодированным идентификатором, поэтому оно может вызвать исключение NullReferenceException

 Menu menu = Page.Master.FindControl("Menu1");
menu.Visible = false;
  

Комментарии:

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

Ответ №2:

У вас может быть свойство показывать или скрывать меню на главной странице.

Нравится

 public void ShowMenu
{
    get { return Menu.Visible; }
    get { Menu.Visible = value; }
}
  

Примечание: если меню статично, вы можете окружить его элементом управления PlaceHolder и управлять отображением / скрытием его с помощью этого элемента управления. Я выбрал этот конкретный элемент управления, чтобы предложить, поскольку он не отображает дополнительный HTML, поэтому на странице ничего не меняется.

.

Затем на странице входа, скажем, Загрузка страницы или что-то еще (не при предварительном запуске или в такие ранние времена, чтобы уже была создана главная страница):

 protected void Page_Load(object sender, EventArgs e)
{
    var siteMasterPage =  Page.Master as SiteMasterPageClassName;
    if(siteMasterPage != null) siteMasterPage.ShowMenu = false;
}
  

.

Обновить

Другой способ решить эту проблему — иметь вложенные главные страницы. Дочерняя главная страница содержит меню и другие материалы и является главной страницей по умолчанию для всех страниц. Родительская главная страница содержит все важные элементы, которые применимы даже к странице входа.

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

Ответ №3:

Вы можете поступить следующим образом. Поместите это в код главной страницы позади.

 protected void Page_Load(object sender, EventArgs e)
{
    if (Request.Url.AbsoluteUri.Contains("Login.aspx"))
    {
        //Disable Menu here
    }
}