app_code, изменить элемент на странице aspx - PullRequest
0 голосов
/ 23 августа 2011

Надеюсь, это достаточно ясно.

Я новичок во всем этом.

У меня есть проект asp.net и c #, в app_code у меня есть класс userInterface.cs, что мне нужно сделать, это следующее:

В этом классе мне нужно получить определенную страницу

NewPage.aspx

и изменить некоторые элементы asp на этой странице.

В настоящее время у меня есть это:

Page p = (Page)HttpContext.Current.Handler;    

Не уверен, что еще мне нужно, чтобы получить страницу.страница, которую я хочу, называется NewPage.aspx.

Буду признателен за любой ответ.

даже что-то, чтобы найти в Google, будет здорово.я не знаю, с чего начать ....

Ответы [ 5 ]

2 голосов
/ 23 августа 2011

Вы можете создать метод в классе App_Code и вызывать этот метод из любого события в вашем коде.Вы можете передать свой метод GridView или вашу полную страницу этому методу.

Это ваше событие Page_Load, расположенное в вашем коде позади файла.

protected void Page_Load(object sender, EventArgs e)
{
    UserInterface.UpdateGrid(ref GridView1);
}

Это статический метод, расположенный в вашем .csфайл.

public static void UpdateGrid(ref GridView view)
{
    // update your GridView here
}
1 голос
/ 23 августа 2011

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

Обновление

Я твой App_Code файл

using System.Web.UI.WebControls;

public static void AddColumn(ref GridView gv)
    {
        BoundField field1=new BoundField();
        field1.HeaderText="Header Text";
        field1.DataField = "DataFieldName";
        gv.Columns.Add(field1);


        BoundField  field2 = new BoundField();
        field2.HeaderText = "Header Text";
        field2.DataField = "DataFieldName";
        gv.Columns.Add(field2);
    }

на вашей странице

Test.AddColumn(ref MyGridView);
MyGridView.DataSource = names;// assign your datasource here
MyGridView.DataBind();
0 голосов
/ 27 июля 2016

Если страница содержимого (.aspx) привязана к главной странице. Вы должны рассмотреть возможность размещения родительского элемента управления внутри страницы содержимого. Например, если главная страница содержит заполнитель содержимого и внутри этого держателя вы связываете страницы, необходимо сначала найти заполнитель содержимого.

Page p = HttpContext.Current.Handler as Page;
Label lbl = p.Form.FindControl("ContentPlaceHolder1").FindControl("UpdatePanel1").FindControl("lblTest") as Label

При составлении запроса на ответ ASP.Net всегда просматривает файл главной страницы (если есть) для доступа к странице содержимого. Поэтому при запросе элемента управления страницы из любого файла .aspx из класса необходимо сначала найти родительский элемент управления на главной странице.

0 голосов
/ 23 августа 2011

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

Чтобы ответить на ваш вопрос, вы можете попробовать что-то вроде этого:

if (HttpContext.Current.Handler is Page)
{
    Page currentPage = (Page)HttpContext.Current.Handler;
    if (currentPage != null)
    {
        //depending on where the control is located, you may need to use recursion
        GridView gridView = currentPage.FindControl("GridView1");
    }
}

Я должен повторить, что это, вероятно, не очень хороший подход, хотя , по множеству причин.Я действительно хотел, чтобы кто-то ответил на ваш настоящий вопрос, так что вот оно.

0 голосов
/ 23 августа 2011

Если вы пытаетесь получить доступ к странице .aspx из вашего класса App_Code, значит, что-то не так с вашим кодом. Вы не должны делать это. Классы из App_Code предназначены для обслуживания ваших страниц .aspx, а не наоборот. В App_Code вы храните классы утилит, например.

...