Как вариант использования контролов для офрмления дизайна можно воспользоваться таким методом:
1-ый контрол вставляет теги head, title, etc.
2-ой второй ричует менюшку и создает табдицу с открытой строкой <tr><td>
....
Здесь контент
..........
3-й закрывает строку и таблицу
Здравствуйте, ketoff, Вы писали:
K>Стоит задача создать механизм позволяющий легко изменять оформление сайта (asp.net приложения).
K>Вот обычная страница default.aspx, которая содержит контрол, который отображает внутри заданного HTML-оформления (шаблона) все что лежит между тегами <body></body>
K>K><%@ Page Language="c#" codeBehind="default.aspx.cs" AutoEventWireup="false" Inherits="CompanyName.CustomPage" %>
K><%@ Register TagPrefix="example" TagName="template" Src="/include/templates/template1.ascx"%>
K><example:template title="net" runat="server" id="template">
K> <body>
K> <h1>Hello world!</h1>
K> </body>
K></example:template>
K>
K>Статическое содержание показывается безупречно, динамические страницы без параметров — тоже.
K>У меня проблема с тем, что если внутри этого контрола вставить другие контролы, например <asp:TextBox>
K>Код:
K>K><%@ Page Language="c#" codeBehind="default.aspx.cs" AutoEventWireup="false" Inherits="CompanyName.CustomPage" %>
K><%@ Register TagPrefix="example" TagName="template" Src="/include/templates/template.ascx"%>
K><example:template title="net" runat="server" id="template">
K> <body>
K> <h1>Hello world!</h1>
K> <asp:TextBox id="TextBox1" runat="server">
K> </body>
K></example:template>
K>
K>...я не могу обратиться к этим контролам.
K>Вопрос:
K>Как к этим контролам обращаться, как изменить их состояние, содержимое?
K>Я в обработчике Page_Load для страницы (в default.aspx.cs в Page_Load) побежался по всем контролам — но TextBox1 там нет! Мой контрол есть template, а его дочерних (TextBox1) нет.
K>Код default.aspx.cs
K>K>private void Page_Load(object sender, System.EventArgs e)
K>{
K> exploreControls(this);
K>}
K>private void exploreControls(Control ctrl)
K>{
K> Response.Output.Write("<li>" + ctrl.ToString() + ctrl.UniqueID + ctrl.ClientID + ctrl.HasControls);
K> if(ctrl.Controls.Count > 0)
K> {
K> Response.Output.Write("<ul>");
K> for(int i = 0; i < ctrl.Controls.Count; i++ )
K> exploreControls(ctrl.Controls[i]);
K> Response.Output.Write("</ul>");
K> }
K>}
K>
K>Предположение: может в момент вызова Page_Load для страницы дочерние элементы моего контрола еще не созданы?
K>(кстати Page_Load для контрола их тоже не видит)
K>В каком месте программы я могу извлечть значения контрола TextBox1 по IsPostBack?
K>Буду благодарен за любую помощь...
K>Может кто порекомендует, как можно еще создать шаблон оформления с минимизацией повторяемого кода внутри страниц.
K>Спасибо.