Главные страницы - путь?
Я могу быть сумасшедшим, но главные страницы меня пугают, потому что я боюсь, что как только я буду заблокирован при использовании главной страницы, я столкнусь с ситуацией, когда я захочу унаследовать только 90% визуального содержимого главной страницы, заставив меня нарушить наследование и, таким образом, воспроизвести содержимое, которое было в мастере, и передать его ребенку.
Я чувствую, что это проблема с любым видом "наследования", в котором вы должны быть осторожны, но кажется, что вы, по крайней мере, можете переопределить методы в обычном классе.
Я, вероятно, не слишком последовательный здесь, но пользовательские элементы управления, кажется, дают вам больше гибкости. Единственным недостатком является то, что вы должны перетащить их на веб-форму. На это я говорю большое дело.
Преобразование моего приложения из пользовательских контроллеров в главные страницы пугает меня, и я боюсь, что мой Javascript сломается.
Комментарии?
5 ответов
Не бойся.
Вы можете создать столько заполнителей, сколько захотите, делая свою главную страницу очень детализированной. Эти заполнители также могут содержать контент и элементы управления по умолчанию.
Поэтому на 90% страниц, где вы хотите использовать разметку по умолчанию, вы можете опустить переопределяющий контент.
В качестве альтернативы в 10% случаев, когда вы хотите что-то другое, вы можете предоставить переопределяющую разметку
Пример:
<%@ Master Language="C#" %>
<html>
<body>
<asp:ContentPlaceholder id="Headline" runat="Server">
My Default Headline
</asp:ContentPlaceholder>
<asp:ContentPlaceholder id="Main" runat="Server" />
</body>
</html>
на вашей домашней странице вы можете иметь такую страницу:
<%@ Page MasterPageFile="..." %>
<asp:Content ContentPlaceHolderID="Headline" runat="Server">
My homepage headline
</asp:Content>
<asp:Content contentplaceholderid="Main" runat="server">
My homepage main content
</asp:Content>
на всех других ваших страницах используйте заголовок по умолчанию, опуская тег заголовка следующим образом:
<%@ Page MasterPageFile="..." %>
<asp:Content contentplaceholderid="Main" runat="server">
My page main content
</asp:Content>
Я бы не стал не использовать мастер-страницы. Вы всегда можете вложить главные страницы, если хотите поделиться большинством Chrome на большинстве страниц, внутренним Chrome, чтобы поделиться в бункере и т. Д.
Как только вы привыкнете к ним, вы начнете использовать их по назначению. Та информация (ссылки на CSS, распространенные js, вопросы размещения страниц и т. Д.), Которой поделились достаточно страниц, чтобы гарантировать общий источник, пойдет туда, и позже вы будете рады, что они там есть.
Когда вы создаете страницу, которая отрывается от этого, вы можете немного подстроиться под своего главного мастера (абстрагируясь по-другому), но вы сможете быстро выполнить настройку и двигаться вперед.
Если это просто одноразовая страница, которая нарушает правила, тогда вы можете просто сказать этой странице наследовать другого мастера.
Сделайте тестовый сайт и поэкспериментируйте с концепцией, прежде чем вы начнете полагаться на нее.
Как вы упомянули, проблемы с наследованием могут возникать где угодно. Не переусердствуйте рано.
С проблемой описанных вами главных страниц вы можете менять / вставлять различные CSS-файлы и использовать селекторы для скрытия / изменения частей HTML-кода, созданного на главной странице.
Идея главной страницы хороша (если не тривиальна), но бесполезна, потому что их реализация.
главная страница не вызывает страницу (содержание), а наоборот. Так в чем же проблема? Просто, вы не можете называть разные страницы, но одну страницу. Итак, вы кодируете и размещаете весь свой код на одной странице. Это нонсенс вообще. Главная страница допускает несколько блоков контента, но все они указывают на одну и ту же страницу (следовательно, загромождают код).
Соединить код мастер-страницы и страницу вызывающего абонента нетривиально, например, они имеют один и тот же тег "form", но вы должны поместить тег form на свою страницу, и вы можете использовать тег form только один раз.:-?
Переменные / Значения не передаются напрямую, вы можете, но это требует некоторого "взлома" (например, вызов функции внутри мастера)
Вы должны обратить внимание в цикле загрузки (до загрузки страницы).
Мастер-страницы хороши, если ваша мастер-страница статична, в противном случае лучше просто "копировать и вставлять" на каждой странице или использовать пользовательские элементы управления, потому что мастер-страницы добавляют новый уровень сложности.
Помните, что цель мастер-страницы - сэкономить время, если она не справится с этой задачей, то она бесполезна.
мои 2 цента.