C# 应用程序代码,修改aspx页面上的元素

C# 应用程序代码,修改aspx页面上的元素,c#,asp.net,httpcontext,app-code,C#,Asp.net,Httpcontext,App Code,希望这能说得足够清楚 我对这一切都不熟悉 我有一个asp.net和c#项目,在app#U代码中我有一个类userInterface.cs,我需要做的是以下几点: 在那门课上,我需要得到一个特定的页面 NewPage.aspx ,并修改该页上的某些asp元素 目前我有: Page p = (Page)HttpContext.Current.Handler; 我不知道我还需要什么才能得到这一页。我想要的页面名为NewPage.aspx 如有任何答复,我将不胜感激 即使是一些东西,谷歌为了找

希望这能说得足够清楚

我对这一切都不熟悉

我有一个asp.net和c#项目,在app#U代码中我有一个类userInterface.cs,我需要做的是以下几点:

在那门课上,我需要得到一个特定的页面

NewPage.aspx

,并修改该页上的某些asp元素

目前我有:

Page p = (Page)HttpContext.Current.Handler;    
我不知道我还需要什么才能得到这一页。我想要的页面名为NewPage.aspx

如有任何答复,我将不胜感激


即使是一些东西,谷歌为了找到将是伟大的。我不知道我们是从…

开始的,我认为你不能在你的网站上这样做,但是你可以在你的
App\u code
文件中创建一个方法,你可以从你的页面调用它,并将控件传递给这个方法,从那里访问它

更新

我需要你的
App\u代码
文件

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();

我认为你不能在你的网站上这样做,但是你可以在你的
App\u code
文件中创建一个方法,你可以从你的页面调用它,并将控件传递给这个方法,从那里访问它

更新

我需要你的
App\u代码
文件

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();

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

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

您可以在App_代码类中创建方法,并从代码中的任何事件调用此方法。您可以将GridView或整个页面传递给此方法

这是位于代码隐藏文件中的页面加载事件

protected void Page_Load(object sender, EventArgs e)
{
    UserInterface.UpdateGrid(ref GridView1);
}
这是位于.cs文件中的静态方法

public static void UpdateGrid(ref GridView view)
{
    // update your GridView here
}

您可以在App_代码类中创建方法,并从代码隐藏处的任何事件调用此方法。您可以将GridView或整个页面传递给此方法

这是位于代码隐藏文件中的页面加载事件

protected void Page_Load(object sender, EventArgs e)
{
    UserInterface.UpdateGrid(ref GridView1);
}
这是位于.cs文件中的静态方法

public static void UpdateGrid(ref GridView view)
{
    // update your GridView here
}

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

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

您可以通过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");
    }
}
我必须重申,出于种种原因,这可能不是一个好方法。不过,我确实希望有人回答您的实际问题,所以问题就在这里。

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

Page p = HttpContext.Current.Handler as Page;
Label lbl = p.Form.FindControl("ContentPlaceHolder1").FindControl("UpdatePanel1").FindControl("lblTest") as Label
在编译请求到响应时,ASP.Net始终通过母版页文件(如果有)访问内容页。因此,当从类请求任何.aspx文件下的页面控件时,必须首先在母版页内找到父控件。

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

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

在编译请求到响应时,ASP.Net始终通过母版页文件(如果有)访问内容页。因此,当从类请求任何.aspx文件下的页面控件时,必须首先在母版页中找到父控件。

是您的项目网站还是web应用程序?是您的项目网站还是web应用程序?然后,当我这样做时,我可以修改控件吗?我的控件是一个gridView,在app_code类中添加列之后,我需要在页面上用新信息重新打印网格。因此,您应该通过引用@Miroprocessor传递它-我发现了一些相同的问题,它说使用这个:Map Map=(Map)LoadControl(~/Controls/Map.ascx”);如何使我的页面名称也成为一种类型?你知道吗?因为这正是我需要的。在这里找到它。您不能使用
LoadControl
加载页面,因为您的页面不是从
System.Web.UI.UserControl
继承的,然后当我这样做时,我可以修改控件吗?我的控件是一个gridView,在app_code类中添加列之后,我需要在页面上用新信息重新打印网格。因此,您应该通过引用@Miroprocessor传递它-我发现了一些相同的问题,它说使用这个:Map Map=(Map)LoadControl(~/Controls/Map.ascx”);如何使我的页面名称也成为一种类型?你知道吗?因为这正是我需要的。在这里找到它。你不能使用
LoadControl
来加载你的页面,因为你的页面不是从
System.Web.UI.UserControl
继承的。你能不能使用这个“page p=(page)HttpContext.Current.Handler;”来获取它,然后像这样做一些转换:NewPage p1=(NewPage)p;?C