Re: Шаблоны оформления релизованный на контролах)
От: BorisD  
Дата: 10.12.04 11:44
Оценка: -1
Как вариант использования контролов для офрмления дизайна можно воспользоваться таким методом:

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>Спасибо.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.