app_code,修改aspx页面上的元素

时间:2011-08-23 10:31:26

标签: c# asp.net httpcontext app-code

希望这一点足够清楚。

我是这个人的新手。

我有一个asp.net和c#项目,在app_code中我有一个类userInterface.cs,我需要做的是下面的内容:

在那门课程中,我需要获得某个页面

  

NewPage.aspx

,并修改该页面上的一些asp元素。

目前我有这个:

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

不确定我需要什么才能获得该页面。我想要的页面叫做NewPage.aspx。

我将不胜感激。

甚至谷歌的东西,以找到将是伟大的。我不知道是从......开始的。

5 个答案:

答案 0 :(得分:2)

您可以在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 :(得分:1)

我认为您无法在您的网站中执行此操作,但您可以在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();

答案 2 :(得分:0)

如果您尝试从App_Code类访问.aspx页面,则代码有问题。你不应该这样做。 App_Code中的类用于提供.aspx页面,而不是反向。例如,在App_Code中,您将保留实用程序类。

答案 3 :(得分:0)

您可以通过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");
    }
}

我必须重申,由于种种原因,这可能不是一个好方法。我确实希望有人回答你的实际问题,所以就是这样。

答案 4 :(得分:0)

如果内容页面(.aspx)绑定在母版页下。您需要考虑在内容页面中找到控件的Parent控件。例如,如果母版页包含内容占位符,并且在该文档夹中您是绑定页面,则必须先找到内容占位符。

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

在编译响应请求时,ASP.Net总是通过主页文件(如果有的话)到达内容页面。因此,在从类中的任何.aspx文件下请求页面控件时,必须首先在Master页面中找到Parent控件。