#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
}
}