Aftab Iqbal Clips Ответов: 2

Как получить доступ к элементу управления формами из библиотеки классов в ASP NET


Привет всем,
допустим, у меня есть панель или текстовый элемент управления в форме, обычно можно получить доступ к элементам управления по идентификатору, но как я могу получить доступ к управлению из библиотеки классов.

Что я уже пробовал:

public class FormDesign
{
public void fun()
{
textbox1.text="some text";   //notworking
foreach(control ct in panel)    //not working
{
//some code
}
}
}

Dave Kreskowiak

Разве это Ан ASP.NET приложение или Windows Forms?

Aftab Iqbal Clips

это Ан ASP.NET применение

2 Ответов

Рейтинг:
4

F-ES Sitecore

Вы не можете получить доступ к элементам управления из библиотеки классов, так как они определены в коде позади файла aspx и заполнены для вас asp.net. Если ваш класс действительно должен бежать от asp.net затем элементы управления настраивают свойства для этих элементов управления

public class FormDesign
{
    public Panel MyPanel {get; set;}

    public void Fun()
    {
        foreach(Control ct in this.MyPanel)
        {


При создании FormDesign в классе code-behind заполните соответствующие свойства

var formDesign = new FormDesign();
formDesign.MyPanel = panel1;
formDesign.Fun();


Вы также можете передать элементы управления в качестве параметров для развлечения, все зависит от того, что должен делать ваш код.


Aftab Iqbal Clips

получаю ошибку на
СФ.НЛП = панель1;

Ошибка CS0103 имя 'panel1' не существует в текущем контексте

F-ES Sitecore

Измените "panel1" на любое другое название вашей панели.

Aftab Iqbal Clips

да сейчас он работает но findcontrol не появляется в intellsense класса
есть решение?

Рейтинг:
2

OriginalGriff

Убедитесь, что текстовое поле имеет runat="server" в нем есть HTML:

<asp:TextBox ID="textbox1" Columns="2" MaxLength="3" Text="1" runat="server"/>
То ID вам нужно будет соответствовать имени, которое вы используете в коде C#.
Панель будет нуждаться в том же самом, но вам также нужно будет получить доступ к ее коллекции элементов управления, и помните, что C# чувствителен к регистру: "control" - это не то же самое, что "Control":
foreach (Control ct in panel.Controls)


И кстати: "это не работает" - одно из самых бесполезных описаний проблемы, которое мы получаем: оно абсолютно ничего не говорит нам о проблеме. Мы не знаем, получаете ли вы сообщение об ошибке, или неправильные данные, или даже что этот код успешно компилируется!
Помните, что мы не можем видеть ваш экран, получить доступ к вашему жесткому диску или прочитать ваши мысли - мы получаем только то, что вы печатаете для работы.
Итак, расскажите нам, что происходит, когда вы запускаете этот код, что вы ожидали, как вы проверили, что произошло. Помогите нам помочь вам!


Aftab Iqbal Clips

как я уже упоминал в вопросе я хочу получить доступ к управлению страницей asp из класса
внутри панели есть текстовое поле
панель добавляется с разметкой
текстовое поле добавляется программно