Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.145.166.7] |
|
Сообщ.
#1
,
|
|
|
Есть несложная страница (Contacts.aspx) сгенерированная программой Artisteer:
<%@ Page Language="C#" MasterPageFile="~/design/MasterPage.master" ValidateRequest="false" AutoEventWireup="true" CodeFile="Contacts.aspx.cs" Inherits="_Contacts" Title="Контакты" %> <%@ Register TagPrefix="artisteer" Namespace="Artisteer" %> <%@ Register TagPrefix="art" TagName="ContactsMenu" Src="ContactsMenu.ascx" %> <%@ Register TagPrefix="art" TagName="DefaultHeader" Src="DefaultHeader.ascx" %> <%@ Reference Page="~/Default.aspx" %> <asp:Content ID="PageTitle" ContentPlaceHolderID="TitleContentPlaceHolder" Runat="Server"> Контакты </asp:Content> <asp:Content ID="HeaderContent" ContentPlaceHolderID="HeaderContentPlaceHolder" Runat="Server"> <art:DefaultHeader ID="DefaultHeader" runat="server" /> </asp:Content> <asp:Content ID="MenuContent" ContentPlaceHolderID="MenuContentPlaceHolder" Runat="Server"> <art:ContactsMenu ID="ContactsMenuContent" runat="server" /> </asp:Content> <asp:Content ID="SheetContent" ContentPlaceHolderID="SheetContentPlaceHolder" Runat="Server"> <!-- Этот контрол доступен --> <asp:TextBox ID="test1" runat="server"></asp:TextBox> <artisteer:Article ID="Contacts" Caption="" runat="server"> <ContentTemplate> <!-- Здесь ошибка доступа --> <asp:TextBox ID="test2" runat="server"></asp:TextBox> <p></p> </ContentTemplate> </artisteer:Article> </asp:Content> Проблемма в том, что я никак не могу получить доступ к контролам в пределах статьи (artisteer:Article) в файле кода (Contacts.aspx.cs): test1.Text = "test1"; test2.Text = "test2"; test1 - все нормально (он за пределами тега artisteer:Article), а для test2 выдает ошибку: Цитата The name 'test2' does not exist in the current context Пробовал так: var test2 = (TextBox)Contacts.FindControl( "test2" ); var test2 = (TextBox)Contacts.ContentPlaceholder.FindControl( "test2" ); возвращает null. Пробовал рекурсивно перебирать все контролы странцы сравнивая ID - тоже ничего. Что-то я упускаю. Подскажите, пожалуйста. В Asp.net я новичок. |
Сообщ.
#2
,
|
|
|
Contacts.GetControl ?
|
Сообщ.
#3
,
|
|
|
Цитата Uncle_Bob @ Contacts.GetControl ? Нет такого метода. Пробую так: protected Control GetControl( string id ) { return Contacts.Controls.Cast<Control>().FirstOrDefault( control => control.ID.Equals( id ) ); } var test2 = (TextBox)GetControl( "test2" ); test2.Text = "word 2"; Возвращает null. |
Сообщ.
#4
,
|
|
|
Перебираю все контролы на странице:
public static void GetAllControls( this ControlCollection rootControls, List<Control> foundControls ) { foreach( Control control in rootControls ) { if( control.Controls.Count > 0 ) GetAllControls( control.Controls, foundControls ); else foundControls.Add( control ); } } так this.Master.Controls.GetAllControls( allControls ); и так: this.Controls.GetAllControls( allControls ); Вот результат: Цитата type [System.Web.UI.LiteralControl], ID [] type [System.Web.UI.HtmlControls.HtmlMeta], ID [] type [System.Web.UI.LiteralControl], ID [] type [System.Web.UI.HtmlControls.HtmlLink], ID [] type [System.Web.UI.LiteralControl], ID [] type [System.Web.UI.HtmlControls.HtmlLink], ID [] type [System.Web.UI.LiteralControl], ID [] type [System.Web.UI.HtmlControls.HtmlLink], ID [] type [System.Web.UI.LiteralControl], ID [] type [System.Web.UI.HtmlControls.HtmlLink], ID [faviconLink1] type [System.Web.UI.HtmlControls.HtmlLink], ID [faviconLink2] type [System.Web.UI.WebControls.ContentPlaceHolder], ID [ScriptIncludePlaceHolder] type [System.Web.UI.LiteralControl], ID [] type [System.Web.UI.LiteralControl], ID [] type [System.Web.UI.LiteralControl], ID [] type [System.Web.UI.LiteralControl], ID [] type [System.Web.UI.LiteralControl], ID [] type [System.Web.UI.ResourceBasedLiteralControl], ID [] type [System.Web.UI.LiteralControl], ID [] type [System.Web.UI.LiteralControl], ID [] type [System.Web.UI.WebControls.Label], ID [lblInfo] type [System.Web.UI.LiteralControl], ID [] type [System.Web.UI.WebControls.TextBox], ID [test1] type [System.Web.UI.LiteralControl], ID [] type [Artisteer.Article], ID [Contacts] type [System.Web.UI.LiteralControl], ID [] type [System.Web.UI.LiteralControl], ID [] То есть второго TextBox-а, который размещен в пределах статьи (Artisteer:Article), просто нет. |
Сообщ.
#6
,
|
|
|
[Музыка из мульфильма Айболит]
Ооой спааасибо Uncle_Bob, оооой спааасибо Uncle_Bob, ооой спааасибо Uuuuncle_Boob! |
Сообщ.
#7
,
|
|
|
Забыл поставить галочку "Вопрос решен".
|